我有许多现有的 printf 语句,我想通过以下方式禁用:
#define printf(...) {};
但我想定义一个新的 myprintf 语句,它仍将使用 stdio printf。我该怎么做呢?
我有许多现有的 printf 语句,我想通过以下方式禁用:
#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");
}
(并不是说我首先会推荐#defining printf
...)
有关我使用do {} while(0)
而不是的原因的解释{}
,请参阅Proper C preprocessor macro no-op