QtCreator:如何将"override"和"final"注册为关键字?
QtCreator: How do I register "override" and "final" as a keyword?
c++ 11(或c++ 0x)向c++引入了override和final关键字。很棒的东西,我们会用它们来改进我们的代码。但是,虽然MS visual - c++ 2010编译器可以完美地处理关键字,但QtCreator(我选择的IDE)完全被它们弄糊涂了。override方法被标记为错误,更糟糕的是,所有代码导航功能或符号代码搜索都完全搞糟了。(
我的问题到此为止。我的问题如上所述:我如何教QtCreator识别override和final作为关键字?谢谢!——罗宾
PS:我使用QtCreator 2.3,最新的稳定版本。编译器为MSVC2010
我猜你需要等到他们发布它来支持c++ 11。重新编译它并不是一个好的选择,因为您需要通过引入两个新关键字来改变语言的语法,从而处理所有的事情(词法、符号表)。
#ifdef __GNUC__
#if __GNUC__*100 + __GNUC_MINOR__ < 40700
#define override
#define final
#endif //GCC version
#else //defined GNUC
#ifdef _MSC_VER
#if _MSC_VER < 1600
#define override
#define final
#else //MS version
#error "UNKNOWN COMPILER"
#endif //MS version
#endif //MS defined
#endif //defined GNUC
这将导致它完全忽略这两个单词
你可以这样做:
#if __cplusplus < 201103L
#define override
#endif
你必须确保你在c++ -11模式下编译(在GCC中应该是"-std=c++11")。这通常是一个好主意,有一个"config.h"头,然后你包括在所有地方的这类东西。使用一些精心设计的宏,您可以确保您的代码也可以使用较旧的编译器构建。除非你完全依赖于一个不能被#if'去掉的特定功能
相关文章:
- 无法将结构注册为增强几何体3D点
- 如何使用AngelScript注册SFML Vector2运算符
- 在遍历处理程序的向量时注册和注销处理程序
- 有没有任务栏API可以立即应用注册表更改
- 使用QJsEngine在Qt中注册自定义类型
- 检查注册表项是否链接到(或副本)另一个注册表项
- 如何使用 TStyleManager::UnRegisterStyle() 取消注册样式
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- SFML 碰撞永远不会在我的系统中注册
- 尝试从C++访问 UWP 的电子邮件邮件类会导致"REGDB_E_CLASSNOTREG类未注册"错误
- 用于创建/注册虚拟存储设备的 IOKit 驱动程序
- 是否有技术原因阻止 Java 中的 final C++ 像 const 一样严格?
- 如何添加预防措施以绕过未注册Microsoft.ACE.OLEDB.12.0?
- 进程外 EXE 的免注册 COM
- 如何注册Qt C++对象以在QML中使用它
- 在Qt中注册自定义元类型的别名类型
- 禁用地址共享注册表不起作用
- 如何从注册表项中提取配置单元和注册表名称
- C++库和自注册类:客户端应用程序中的工厂映射为空
- QtCreator:如何将"override"和"final"注册为关键字?