3

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

#ifdef warning     //expecting similar check, not exactly this
#warning ("my message")
#endif

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

4

3 回答 3

1

您可以使用这样的东西来检查支持:

#if defined(_MSC_VER) || defined(__GNUC__) || defined(__clang__)
# define HAVE_WARNING
#endif

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

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

于 2013-03-13T12:55:20.567 回答
0
#pragma message("Warning...")
#pragma message "Oh NO!"

GCC 和 MSVC 都支持。有人请评论 Clang?我没有当前版本。

于 2013-03-13T12:55:30.273 回答
0

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

于 2013-03-13T12:56:56.143 回答