为什么Linux内核#define是一个符号呢?

时间:2016-12-07 12:57:53

标签: c linux-kernel

在Linux内核中there can be found a line of code看起来多余:

#define __arch_swahb32 __arch_swahb32

这样的成语的目的是什么?

2 个答案:

答案 0 :(得分:15)

请考虑以下代码:

#ifdef foo
    foo();
#endif

如果您需要上述代码段来调用函数foo,则需要定义foo。但是,如果你只是

#define foo

然后函数foo名称将替换为空标记,第一个代码段将被预处理为();。但是,如果你

#define foo foo

然后第一个代码段将预处理到foo();

答案 1 :(得分:6)

欺骗以确保void deleting(int A[size], int size){ for (int i = 0; i < size / 2; i++) A[i] = A[2 * i + 1]; for (int i = size / 2; i < size; i++) A[i] = A[size / 2]; } 通过,但不会替换。 (通常用于实现宏类型函数)