【发布时间】:2018-01-07 13:49:39
【问题描述】:
在我的 Qt5 C++ 桌面项目的 PRO 文件中,我有以下声明:
DEFINES += PROJECT_VERSION=\\\"1.0.0.0\\\"
在一个类的头文件中,比如Foo,我声明并定义了一个获取版本的方法,如下所示:
QString version() { return PROJECT_VERSION; }
当我尝试编译代码时,出现以下错误:
error: C2065: 'PROJECT_VERSION': undeclared identifier
如屏幕截图所示,PROJECT_VERSION 的颜色编码正确,工具提示也正确,在我看来,它已被识别。那为什么会出现这个错误呢?
我不知道是什么原因导致了这种情况,也不知道这种情况是如何发生的。任何帮助将不胜感激。
【问题讨论】:
-
好吧,它没有被声明。它不会出现在任何 TU 中。你从外面注入它。
-
@StoryTeller,什么是 TU?此外,我在几个地方使用了 PROJECT_VERSION 并且可以识别。
-
翻译单元。编译器解析的内容以查看预处理标记和标识符。编译器由于一些外力而知道这个宏是什么的事实,并不意味着静态分析工具有这些信息。
-
嗯,你有一个明确的配置问题。希望熟悉您的工具链的人会来。我自己对这个特定的经验有限。
-
@StoryTeller,顺便说一句,“工具链”在我看来是一个正确方向的提示,因此我重新标记了这个问题,使其更具体。