请考虑以下代码:#ifdef foo foo(); #endif 如果您想像上面的代码片段一样调用函数foo,您需要定义foo。不过,如果你只是#define foo 那么函数foo的名称将被替换为一个空令牌,因此第一个代码片段将被预处理为();。但是,如果你 #define foo foo 那么第一个代码片段将按预期进行预处理为foo();。