繁体   English   中英

ISO C90 / 99检查是否存在特定于编译器的功能

[英]ISO C90/99 Check if compiler specific function exists

因此,我正在编写可移植的嵌入式ansi C代码,试图支持多个编译器和硬件目标。 每个编译器/硬件供应商都支持不同的math.h函数。 有些仅支持C90,有些仅支持C99的子集,有些仅支持完整的C99。

我试图找到一种方法来检查给定函数在预处理器中是否存在,以便可以使用自定义宏(如果不存在)。 一些供应商在math.h中具有外部函数,一些供应商使用#define重新映射到一些内部调用。 是否有一段代码可以告诉您它是#defined还是extern函数? 我可以使用#ifdef进行定义,但是实际的函数调用呢?

通常的解决方案是查看由预处理器本身定义的宏,或者将其作为-D定义传递到构建过程中,这些宏标识正在运行的编译器和平台,并利用它们以及对每种环境有哪些特殊帮助的知识需要配置您的代码。

我想您可以编写一系列测试.c文件,尝试对其进行编译,查看返回的错误代码,并使用它们来设置适当的-D标志...但是我不认为这样做会更清洁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM