【发布时间】:2014-04-13 06:50:56
【问题描述】:
我想有条件地使用 printf() 或语句:
#define USE_PRINTF
#ifdef USE_PRINTF
#define macrofn(str) printf(str)
#else
#define macrofn(str) some_statement
#ifndef USE_PRINTF
但我收到以下错误:
incompatible implicit declaration of built-in function 'printf'
我做错了什么?谢谢
【问题讨论】:
-
请贴出调用宏的代码。
-
不添加
#include <stdio.h>? -
这不正确...您应该使用
#endif而不是#ifndef USE_PRINTF,这意味着“如果未定义USE_PRINTF”,这已经是由#else部分处理。对于每个#if,您绝对需要一个#endif。 -
@ThoAppelsin:不错的收获!!但是编译器不会因为这个错误而抱怨没有匹配的
endif。 -
只使用一个参数
printf的目的是什么?puts在大多数情况下不应该更合适吗?另见stackoverflow.com/a/16813480/908515
标签: c macros c-preprocessor