我有一个之前使用 Eclipse 3.5.2 创建的项目。在其中,我能够在项目属性中设置构建变量。在本例中,假设我将 SW_VERSION
设置为 4403。现在它是一个十六进制数字,因此在“build设置”中,我添加了一个符号 "VERSION=0x${SW_VERSION }"
条目。然后在我的代码中,我可以使用 VERSION
作为常规数字,如下所示:
unsigned int vers = VERSION;
没有任何问题,vers
得到了值 0x4403
。
现在我正在使用 Eclipse 版本 4.4.2,并且我正在使用一些新功能更新我的项目。但首先我只是尝试使用新的工具链重新编译我的旧项目,虽然我在控制台上没有收到任何消息,但我在“问题”选项卡中收到 3 个警告:
Symbol 'SW_VERSION' could not be resolved
Symbol '$' could not be resolved
Statement has no effect 'VERSION'
我还没有尝试运行已完成的项目,但这让我担心,我必须假设它实际上不会像以前那样工作。在较新的 Eclipse 中是否有一些不同的方法可以做到这一点,或者这个功能已经消失了?
顺便说一句,我这样做是有原因的。我还将 SW_VERSION
的值附加到我的工件名称的末尾。那部分至少仍然有效。
最佳答案
索引器(CDT 解析器)看到您的 VERSION 宏并将其扩展为 0x${SW_VERSION} 但不评估它,因此它将它传递给预处理器,因为它是未扩展的, 这些警告来自静态代码分析,不会影响您的二进制文件。但是,由于看到您必须通过仅为索引器定义 VERSION 宏来强制索引器正确查看此宏,这很烦人
- 项目属性->C/C++ 常规->预处理器..->
- 选择 GNU C(或您使用的任何语言变体)->
- 选择 CDT 用户设置条目
- 点击“添加...”并添加“预处理器宏”VERSION=1
你放在那里的数字并不重要,因为它不会出现在你的二进制文件中,它只是用于语法解析。
关于c - 在 Eclipse 4.4.2 中使用 C 代码中的构建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34780529/