Linux中__ASSEMBLY__ 宏定义的做用


     某些常量宏会同时出现被c和asm引用,而c与asm在对当即数符号的处理上是不一样的。asm中经过指令来区分其操做数是有符号仍是无符号,而不是经过操做数。而c中是经过变量的属性,而不是经过操做符。c中如要指名常量有无符号,必须为常量添加后缀,而asm则经过使用不一样的指令来指明。如此,当一个常量被c和asm同时包含时,必须做不一样的处理。故AFLAGS中将添加一项D__ASSEMBLY__,来告知预处理器此时是asm。
下面的代码取自kernel 2.6.10,include/asm-i386/page.h,L123-127

#ifdef __ASSEMBLY__
#define __PAGE_OFFSET        (0xC0000000)
#else
#define __PAGE_OFFSET        (0xC0000000UL)
#endif

     相似的你们也能够去分析一下__KERNEL__的做用. code

相关文章
相关标签/搜索