我将在可移植的C代码中使用生成编译时警告。但是并不是所有的平台都支持#warning。有没有任何方法可以找到该平台中是否支持#warning。
#ifdef warning //expecting similar check, not exactly this
#warning ("my message")
#endif因为我将在这么多的平台上编译我的代码,所以在某些平台上,如果不支持它,它可能会产生编译错误。如果有一些宏可以找到#warning的可用性,那么我将能够在不支持它的平台上避免构建失败。
发布于 2013-03-13 12:55:20
您可以使用这样的方法来检查支持:
#if defined(_MSC_VER) || defined(__GNUC__) || defined(__clang__)
# define HAVE_WARNING
#endif
#ifdef HAVE_WARNING
# pragma message("some warning")
#endif在需要时向第一个#if添加更多特定于编译器的检查。
发布于 2013-03-13 12:55:30
#pragma message("Warning...")
#pragma message "Oh NO!"都得到GCC和MSVC的支持。有一些关于Clang的评论吗?我没有最新版本。
发布于 2013-03-13 12:56:56
#warning主要是gcc的扩展,尽管其他一些可能会支持。微软将需要类似于#pragma message的东西。如果你指的是一个标准的C版本,而不仅仅是gcc所在的地方,你就不能称它为“便携”。
https://stackoverflow.com/questions/15385829
复制相似问题