当一个变量被定义并且它似乎被这样识别时,什么会导致 "C2065: undeclared identifier"?
What could cause "C2065: undeclared identifier" when a variable is defined and it seems to be recognized as such?
在我的 Qt5 C++ 桌面项目的 PRO 文件中,我有以下声明:
DEFINES += PROJECT_VERSION=\\"1.0.0.0\\"
在class的头文件中,比如Foo
,我声明并定义了一个获取版本的方法,如下所示:
QString version() { return PROJECT_VERSION; }
当我尝试编译代码时,出现以下错误:
error: C2065: 'PROJECT_VERSION': undeclared identifier
如屏幕截图所示,PROJECT_VERSION 颜色编码正确,工具提示也正确,在我看来它已被识别。那为什么会出现这个错误?
我不知道是什么导致了这种情况,也不知道这种事情是如何发生的。任何帮助将不胜感激。
我只想提供相关信息,我对问题的描述过于简单了。
事实证明,来自 SUBDIRS 层次结构的另一个 项目 B 包含 header 和 version()
方法。 PROJECT_VERSION
的声明发生在 Project A 的 PRO 文件中,其中一部分是 header,但是不在 项目 B 的 PRO 文件中。 Qt Creator 从 项目 A 中看到 PROJECT_VERSION
和代码完成、颜色编码和工具提示工作(我认为这就是 @StoryTeller 在 "static analysis" 下的意思)。然而,编译器没有,所以它会抱怨。
造成混淆的原因是错误没有发生在 项目 B 中,其中包含 header,但在 中项目 A,其中 header 和 PROJECT_VERSION
的声明。所以一开始看起来很矛盾。
解决方案:将DEFINES += PROJECT_VERSION=\\"1.0.0.0\\"
添加到项目B的PRO文件中现在它编译得很好。
再次感谢@StoryTeller 提供的有用提示。
在我的 Qt5 C++ 桌面项目的 PRO 文件中,我有以下声明:
DEFINES += PROJECT_VERSION=\\"1.0.0.0\\"
在class的头文件中,比如Foo
,我声明并定义了一个获取版本的方法,如下所示:
QString version() { return PROJECT_VERSION; }
当我尝试编译代码时,出现以下错误:
error: C2065: 'PROJECT_VERSION': undeclared identifier
如屏幕截图所示,PROJECT_VERSION 颜色编码正确,工具提示也正确,在我看来它已被识别。那为什么会出现这个错误?
我不知道是什么导致了这种情况,也不知道这种事情是如何发生的。任何帮助将不胜感激。
我只想提供相关信息,我对问题的描述过于简单了。
事实证明,来自 SUBDIRS 层次结构的另一个 项目 B 包含 header 和 version()
方法。 PROJECT_VERSION
的声明发生在 Project A 的 PRO 文件中,其中一部分是 header,但是不在 项目 B 的 PRO 文件中。 Qt Creator 从 项目 A 中看到 PROJECT_VERSION
和代码完成、颜色编码和工具提示工作(我认为这就是 @StoryTeller 在 "static analysis" 下的意思)。然而,编译器没有,所以它会抱怨。
造成混淆的原因是错误没有发生在 项目 B 中,其中包含 header,但在 中项目 A,其中 header 和 PROJECT_VERSION
的声明。所以一开始看起来很矛盾。
解决方案:将DEFINES += PROJECT_VERSION=\\"1.0.0.0\\"
添加到项目B的PRO文件中现在它编译得很好。
再次感谢@StoryTeller 提供的有用提示。