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

相關文章
相關標籤/搜索