首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查#警告预处理器的有效性

检查#警告预处理器的有效性
EN

Stack Overflow用户
提问于 2013-03-13 12:49:46
回答 3查看 611关注 0票数 3

我将在可移植的C代码中使用生成编译时警告。但是并不是所有的平台都支持#warning。有没有任何方法可以找到该平台中是否支持#warning

代码语言:javascript
复制
#ifdef warning     //expecting similar check, not exactly this
#warning ("my message")
#endif

因为我将在这么多的平台上编译我的代码,所以在某些平台上,如果不支持它,它可能会产生编译错误。如果有一些宏可以找到#warning的可用性,那么我将能够在不支持它的平台上避免构建失败。

EN

回答 3

Stack Overflow用户

发布于 2013-03-13 12:55:20

您可以使用这样的方法来检查支持:

代码语言:javascript
复制
#if defined(_MSC_VER) || defined(__GNUC__) || defined(__clang__)
# define HAVE_WARNING
#endif

#ifdef HAVE_WARNING
# pragma message("some warning")
#endif

在需要时向第一个#if添加更多特定于编译器的检查。

票数 1
EN

Stack Overflow用户

发布于 2013-03-13 12:55:30

代码语言:javascript
复制
#pragma message("Warning...")
#pragma message "Oh NO!"

都得到GCC和MSVC的支持。有一些关于Clang的评论吗?我没有最新版本。

票数 0
EN

Stack Overflow用户

发布于 2013-03-13 12:56:56

#warning主要是gcc的扩展,尽管其他一些可能会支持。微软将需要类似于#pragma message的东西。如果你指的是一个标准的C版本,而不仅仅是gcc所在的地方,你就不能称它为“便携”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15385829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档