答案 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];
}
通过,但不会替换。 (通常用于实现宏类型函数)