我有许多现有的PrtTF语句,我想通过以下方式禁用:

#define printf(...) {};

但是我想定义一个新的myprintf语句,它仍然使用stdio printf。
我该怎么做?

最佳答案

使用

#define myprintf (printf)

括号将禁用宏扩展。
#include <stdio.h>

#define printf(...) do {} while(0)
#define myprintf (printf)

int main() {
  printf("printf\n");
  myprintf("myprintf\n");
}

(我并不建议首先定义printf。)
有关为何使用do {} while(0)而不是{}的解释,请参见Proper C preprocessor macro no-op

09-27 06:56