作者lowvoice (i am sam)
看板LinuxDev
标题[问题] linux kernel
时间Sat Jan 23 15:50:13 2010
作修改嵌入式Linux OS时出现几个问题
想请问前辈能指正我的错误
我想在linux的include中新增一个变数,例如(int abc;)
但是在make时候会出现重复定义的错误
但是如果加上extern 例如(extern int abc;)
就不会出现compile的error
这是何原因? \
以前在写code时,不是要先定义一个变数,如果其他档案也要用这变数
才加extern 在变数前面?
另一个问题是我想在两个kernel的.c档中传递参数
要怎样做才有办法
是EXPORT_SYMBOL吗??
还有一个问题
就是常常看到kernel code中有#ifdef XXX (XXX是一个变数名称)
#endif
想请问那个XXX的值,是在哪边决定的阿?
Makefile吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.88.6
1F:推 alongalone:写在 *.h 会因为多重引用,导致变数重复定义 01/23 16:47
2F:→ alongalone:写extern才表示实体只有一份; 个人理解是这样 01/23 16:47
※ 编辑: lowvoice 来自: 140.113.88.6 (01/23 23:18)
3F:推 askacis:你写在h档里面,本来就是要加extern,不然多个C党都引用该h 01/24 12:13
4F:→ askacis:档就会重复定义;第二个问题可以在Makefile或是kernel的 01/24 12:14
5F:→ askacis:.config里面定义,CONFIG_XXXXX之类的define就是了.... 01/24 12:16
6F:→ adrianshum:这些是基本 C/C++ 问题多於 kernel 相关吧... 01/26 16:29