c - 在 Eclipse 4.4.2 中使用 C 代码中的构建变量

标签 c eclipse eclipse-cdt

我有一个之前使用 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/

相关文章:

java - 如何在两个 Eclipse 插件之间共享通用功能?

c++ - 如何在 Linux 上使用#ifdef _DEBUG?

c - 将作为第二个参数传递的函数应用于指针 s 指向的数组的每个索引的函数

c - free() 函数给出 Core Dumped 错误

android - 为什么 Subclipse 不能与 Android Developer Tools (ADT) 插件共存?

c++ - 如何让 eclipse cdt 显示运行时错误(例如段错误)

android - Eclipse-CDT 无法在 NDK 项目中找到 stdlib 符号

c - 使用 libgda-ui 调用 row-activated

c - 如何在 C 中表示长位序列?

eclipse - 在 Eclipse 中的包资源管理器中,我可以按名称查找文件吗?