为什么Linux内核将一个符号定义为它本身?

14
2个回答

15

请考虑以下代码:

#ifdef foo
    foo();
#endif

如果您想像上面的代码片段一样调用函数foo,您需要定义foo。不过,如果你只是

#define foo

那么函数foo的名称将被替换为一个空令牌,因此第一个代码片段将被预处理为();。但是,如果你

#define foo foo

那么第一个代码片段将按预期进行预处理为foo();


6

确保#if defined(__arch_swahb32)通过但不进行替换的技巧。(通常用于实现宏类型函数)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接