【发布时间】:2013-01-14 06:12:21
【问题描述】:
我正在编译一个使用 C++ 关键字“覆盖”的 C++ 程序。
我在 Visual Studio 2010 中编译成功,但现在需要在 g++ 上编译。只有 g++ 4.6 可用(您需要 g++ 4.7 来支持“覆盖”)。
真正的解决方案是安装 g++ 4.7(现在正在发生),但这让我开始思考。是否有编译时检查以查看是否支持关键字?
我试过了:
#ifndef override
#define override
#ifdef BUILD_WINDOWS
#pragma message("The \"override\" keyword is not supported on this compiler! Ignoring it!")
#else
#warning "The \"override\" keyword is not supported on this compiler! Ignoring it!"
#endif
#endif
这不起作用,因为“覆盖”不是符号。
我想要更通用的东西,而不是简单地检查编译器版本以查看它是否是支持关键字的版本之一。如果有的话,如何做到这一点?
【问题讨论】:
-
您可以更改“#ifndef override”以检查不是符号而是编译器版本作为部分解决方案
-
请注意,
override不是 C++11 中的关键字。它是一个特殊标识符,仅在特定上下文中才有意义。 -
这对我来说似乎是寻找问题的解决方案。只需重命名函数,或使用初始大写,名称必须为“OverRide”
标签: c++