当前位置: 技术问答>linux和unix
help啊help....
来源: 互联网 发布时间:2015-03-10
本文导语: 正在看一个LINUX的驱动,其中short.c的头部定义了如下的东西: #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # define MODULE #endif 但我翻看了整个short.c都找不到哪里用到了__KERNEL__和MODULE. 还有,在Makefile中有: ...
正在看一个LINUX的驱动,其中short.c的头部定义了如下的东西:
#ifndef __KERNEL__
# define __KERNEL__
#endif
#ifndef MODULE
# define MODULE
#endif
但我翻看了整个short.c都找不到哪里用到了__KERNEL__和MODULE.
还有,在Makefile中有:
CFLAGS = -D__KERNEL__ -DMODULE -Wall $(DEBFLAGS)
这里面的-D__KERNEL__和-DMODULE是什么意思?有什么作用?
#ifndef __KERNEL__
# define __KERNEL__
#endif
#ifndef MODULE
# define MODULE
#endif
但我翻看了整个short.c都找不到哪里用到了__KERNEL__和MODULE.
还有,在Makefile中有:
CFLAGS = -D__KERNEL__ -DMODULE -Wall $(DEBFLAGS)
这里面的-D__KERNEL__和-DMODULE是什么意思?有什么作用?
|
兄弟,这么个定义要在其他include的头文件中用到,并不是在你当前的C文件中用的。
第二个,我想也是在定义了__KERNEL__和MODULE
自己写个程序验证一下吧
第二个,我想也是在定义了__KERNEL__和MODULE
自己写个程序验证一下吧
|
#ifndef __kernel__
是说如果没有定义__kernel__,就定义#define __KERNEL__
如果不这样,如果有a1.c, 里面#include short.c
a2.c 里面#include short.c
如果有a3.c ,里面#include a1.c,#include a2.c
这样编译的时候就会说short.c中定义的东东重复定义
但是这样写上#ifndef __KERNEL__之后,就不会有这种问题了
因为a3.c在#include a1.c中定义了__KERNEL__,再#include a2.c时
#ifndef __KERNEL__(如果没有定义,就定义的意思)发现已经定义,就不会再定义了
哈哈,我该学习一下表达了,笨的要死,^_^
是说如果没有定义__kernel__,就定义#define __KERNEL__
如果不这样,如果有a1.c, 里面#include short.c
a2.c 里面#include short.c
如果有a3.c ,里面#include a1.c,#include a2.c
这样编译的时候就会说short.c中定义的东东重复定义
但是这样写上#ifndef __KERNEL__之后,就不会有这种问题了
因为a3.c在#include a1.c中定义了__KERNEL__,再#include a2.c时
#ifndef __KERNEL__(如果没有定义,就定义的意思)发现已经定义,就不会再定义了
哈哈,我该学习一下表达了,笨的要死,^_^
|
不过这种写法只是在.h中经常见到
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。