【问题标题】:Compiler issues: "Use of Undeclared Identifer" error with constants that still work编译器问题:“使用未声明的标识符”错误,常量仍然有效
【发布时间】:2012-10-19 21:11:15
【问题描述】:

我正在使用一个 Constants.h 文件来为 URL 等资源声明大量字符串。这在过去一直工作得很好,事实上,当我编译和运行时,它仍然可以工作。

但是,尽管将它们标记为“语义问题”(听起来更像是警告),但问题导航器仍会显示错误(红色刘海),并且代码编辑器窗口也会针对以下行显示错误:

[app openBrowserWithUrl:[NSURL URLWithString: kRequestInformationURL]];

Constants.h 中的行如下所示:

static NSString * const kRequestInformationURL = @"http://www.myserver.com"; // uses SSL!

我在 Constants.h 中的所有声明都会引发警告/错误。但它仍然可以编译并运行良好!我不知道这里发生了什么,但这很烦人,因为我的项目现在显示我有很多警告/错误。

我还应该补充一点,这发生在我的一台 Mac 上的最新版本 (4.5.1) Xcode 中 而不是另一个,打开完全相同的项目文件。

我应该注意的另一件事:通常只有在编译后单击文件进行编辑时才会看到这些错误/警告。

已编辑更新:我认为我可以通过遵守更严格的常量声明来消除这些问题,正如本文所述:https://stackoverflow.com/a/539039/326398 但是所有警告(正如我之前所说,在 Xcode 中标有错误图标)马上回来了。所以谜团仍然完好无损。

【问题讨论】:

  • Xcode 不是编译器。 另外,如果它编译并运行,那么它不是错误,只是警告。
  • 是的,我已经多次“清理”和“清理构建文件夹”......
  • 我知道 Xcode 不是编译器,但它在问题导航器中显示编译器错误。不过,感谢您的帮助。
  • 哦,我明白了。为了清楚起见,还是编辑了问题。
  • 这可能确实是编译器错误或者您误解了 const 的正确性。如果两者都不是,我没有想法。 :(

标签: constants compiler-warnings


【解决方案1】:

当你使用“false”变量时会发生这种情况,你的 NSString 被声明为 *“const”,你不能这样做,因为 const 实际上是 Xcode 中某些东西的自己的声明,只需更改 NSStrings 变量名。

【讨论】:

  • 感谢您的洞察力,但它并没有解释为什么 Xcode 之前从来没有遇到过问题,然后突然之间就出现了问题?在我的另一台 Mac 上,也使用最新的 Xcode,我可以打开项目而不会收到任何这些警告?
  • 所以尝试在你的另一台 Mac 上编译项目...我可以告诉你我所知道的。
  • 只需更改您的 NSString 名称...这将解决它,不知道您的问题出在哪里,因为您询问了该警告的原因-我把它给了您...似乎不适合你……?
猜你喜欢
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 2022-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多