OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2073|回复: 3

如何改才能不重复定义?

[复制链接]

24

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2018-4-9
在线时间
25 小时
发表于 2018-5-12 12:11:36 | 显示全部楼层 |阅读模式
1金钱
我在GPS.H文件写了结构体
typedef struct SaveData
{
    char latitude[latitude_Length];        //纬度
    char N_S[N_S_Length];        //N/S
    char longitude[longitude_Length];        //经度
    char E_W[E_W_Length];        //E/W
} _SaveData;

然后我在GPS.c和usart.c文件都要用到_SaveData,如果我分别在GPS.c和usart.c文件都Include “GPS.h”的话,会提示重复定义,我改如何写才能不重复定义

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

24

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2018-4-9
在线时间
25 小时
 楼主| 发表于 2018-5-12 12:11:37 | 显示全部楼层
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-5-12 12:29:54 | 显示全部楼层
下面的结构体声明放单任意一个头文件xx.h就可以了
typedef struct _SaveData
{
    char latitude[12];        //纬度
    char N_S[12];        //N/S
    char longitude[12];        //经度
    char E_W[12];        //E/W
} SaveData;

xx.c里面用结构体声明变量
SaveData GPS_data;
xx.h里面         extern SaveData GPS_data;
包含xx.h的地方就可以用GPS_data了
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
发表于 2018-5-12 12:47:20 | 显示全部楼层
275891381 发表于 2018-5-12 12:29
下面的结构体声明放单任意一个头文件xx.h就可以了
typedef struct _SaveData
{

实际上这是针对变量的,
LZ要的应该是针对类型声明的。

一般的,在XXX.h文件中头部加入
#ifndef __XXX_H
#define __XXX_H       
尾部加入
#endif

可以避免重复编译,如果在VS平台下,还可以使用MS自己的关键字
#pragma once来避免重复编译。


做这个回复是为了给某些想知道方法的人留个方便。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-14 10:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表