如何检查该函数在编译器上是不是可用?
Posted
技术标签:
【中文标题】如何检查该函数在编译器上是不是可用?【英文标题】:How to check if the function is available on compiler?如何检查该函数在编译器上是否可用? 【发布时间】:2012-07-01 03:43:15 【问题描述】:如果编译器内置函数,有没有办法在编译时检测? 例如,像这样:
#ifndef ITOA_FUNCTION
#define itoa myitoaimplementation
#endif
提前致谢。
【问题讨论】:
我很确定预处理器在函数存在之前运行。 【参考方案1】:不,没有任何直接的东西。您能做的最好的事情就是从平台、编译器版本等方面进行猜测。
在大多数情况下,我更喜欢另外两条路线之一。一种是只给你自己的实现一个不同于编译器使用的名称,并且无论编译器是否提供类似的东西,都始终使用它。
第二个是将你这样的函数实现放到一个单独的文件中,并处理makefile中的存在/不存在,只是决定是否将该文件包含在项目中。
【讨论】:
我已经评论了你的回答here。我想知道你的意见。 @Nawaz:是的——我真的需要完全重写那个答案。其中一些我没有仔细阅读代码,并且在一些地方我引入了不准确性,试图防止它变得过于复杂。我想得越多,我就越认为分析现有代码可能是错误的方法——我可能应该专门编写一些代码来说明我想要表达的观点。 感谢您的回复。 :-) 当你重写你的答案时请告诉我。我会看到和学习的东西。毕竟,SFINAE 是一个不太容易的话题。以上是关于如何检查该函数在编译器上是不是可用?的主要内容,如果未能解决你的问题,请参考以下文章
java中如何检测本机指定的UDP服务端口是不是被占用?并且自动分配一个可用udp端口;
如何检查 Matlab 编译器运行时 (MCR) 在我的电脑上是不是正常工作?