我想有条件地使用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'
我做错了什么?感谢
答案 0 :(得分:5)
您不一定必须在宏定义之前包含<stdio.h>
。对于您已经开始的#endif
,您真正需要的是#if
。例如,以下程序可以正常工作:
#define USE
#ifdef USE
#define asd printf("asd")
#else
#define asd puts("kek")
#endif
#include<stdio.h>
int main( ) {
asd;
getchar( );
return 0;
}
所以......是的。
答案 1 :(得分:3)
您需要将#include <stdio.h>
添加到您的文件中。
有关此错误消息的详细信息,请查看here。
答案 2 :(得分:2)
如果您想使用stdio.h
,则需要添加printf
。
答案 3 :(得分:2)
您应该使用以下语法:
#include <stdio.h>
#define USE_PRINTF
#ifdef USE_PRINTF
#define macrofn(str) printf(str)
#else
#define macrofn(str) some_statement
#endif