Mic*_*ael 16 c macros c-preprocessor
是否可以告诉C预处理器检查是否声明了函数(不是宏)?我尝试了以下方法,但它似乎不起作用:
#include <stdio.h>
int main(void)
{
#if defined(printf)
printf("You support printf!\n");
#else
puts("Either you don't support printf, or this test doesn't work.");
#endif
return 0;
}
Run Code Online (Sandbox Code Playgroud)
laa*_*lto 22
否.预处理器在C编译器和C编译器处理函数声明之前运行.预处理器仅用于文本处理.
但是,大多数头文件都包含_STDIO_H_
可以在预处理器阶段测试的保护宏.但是,该解决方案不可移植,因为包含保护宏名称未标准化.
如果你看一下像autoconf这样的工具,你会看到他们经过多次测试来确定计算机有没有,要正确编译,然后设置正确的#DEFINES.
您可能希望查看该模型,以及该工具,如果您使用unix的某种风格,因为您想要做的事情是不可能的,正如其他人无疑指出的那样.