编译老是显示重复定义

2019-08-16 23:19发布

1.png 2.png
编译老是显示重复定义,实际上就一个地方定义了,这是为啥



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
21条回答
Owen
2019-08-17 04:25
heiheihaha 发表于 2017-7-11 14:31
我前面加了static 编译是没问题了,但是我一直不明白#ifndef __LCD_H#define __LCD_H       
这个不就是防止重 ...

尽量不要在头文件定义变量。
一般的头文件里用的#ifndef, #define, #endif这几个预编译指令,解决的是一个.c或.cpp文件编译时的重复包含问题,否则会出现类型重复定义问题:"error C2011: 'xxx' : 'class' type redefinition"
而如果在头文件中定义了默认命名空间的变量,那么如果工程中有多个.c或.cpp文件包含了该头文件,在这几个源文件编译后的目标文件.obj中均包含有该变量,于是在链接时会再报一个变量重复定义的错误
你用static修饰之后可以使当前文件的数组变量对其他文件不可见。也就是说,你现在程序里依然存在好几份你定义的数组变量,只不过“骗过”编译器不报错了,但是会占很多存储空间

一周热门 更多>