C语言使用上的区别求证
我以前做过PIC单片机的C语言编程。
如下编写是没有问题的:
有A.h文件,以及a.c b.c c.c三个文件。
在A.h里面这样写:
#ifndef A_HEAD___
#define A_HEAD___
int iTest;
#endif
然后分别在a.c b.c c.c里面写#include "A.h"
之后
分别在a.c里面写 iTest = 1;
分别在b.c里面写 iTest = 2;
分别在c.c里面写 iTest = 3;
这样写都没有问题的。
但是在Linux的驱动代码里面这样写就不行啊,会说iTest重复定义。
要这样写才行:
在A.h里:
#ifndef A_HEAD___
#define A_HEAD___
extern int iTest;
#endif
在a.c b.c c.c的任何一个文件里写:
int iTest;
之后
分别在a.c里面写 iTest = 1;
分别在b.c里面写 iTest = 2;
分别在c.c里面写 iTest = 3;
这样就可以了。
难道这是Linux驱动的C语言特有的吗?求证一下。
刚开始Linux驱动编写,请不吝赐教啊。
C Linux linux驱动
[解决办法]
建议 LZ 你变量的定义不要放在头文件里,容易引起重复定义的问题
[解决办法]
编译器区别吧