在 C++/Qt 项目中使用一些花哨的 C++11 功能时,QtCreator 的代码模型存在一些问题。就我而言:模板化别名,如下所示:
template<class T> using Ptr = QSharedPointer<T>;
QSharedPointer<SomeClass> myPtr = ...;
myPtr->... // will complete
Ptr<SomeClass> myPtr = ...; // not even parsed as a type...
myPtr->... // won't complete
所以我想在 QtCreator 解析文件时Ptr
只对我的定义进行宏破解,但当然在编译器解析文件时使用漂亮的模板化别名语法。就像是:
#ifdef QT_CREATOR
# define Ptr QSharedPointer
#else
template<class T> using Ptr = QSharedPointer<T>;
#endif
使用 a 将宏定义放在 .pro 文件中是DEFINES += -D...
行不通的,因为 QtCreator 足够聪明,可以在代码模型中使用它们(这当然很好)。此外,QMAKE_CXXFLAGS += -D...
正在正确解析(可悲)。
我如何“欺骗” QtCreator 定义了一个宏,但是(对于编译器)没有(或相反)?
PS:我使用的是最新版本(2.7),也试过2.6。