Eclipse 问题 - 编译期间不考虑在 .c 和 .cpp 文件中定义的预处理

Posted

技术标签:

【中文标题】Eclipse 问题 - 编译期间不考虑在 .c 和 .cpp 文件中定义的预处理【英文标题】:Eclipse Issue - Preprocess defined in .c & .cpp file are not considered during compilation 【发布时间】:2017-06-27 06:33:27 【问题描述】:

我正在使用 Eclipse 3.8,我正在开发具有不同配置的 LED 面板,例如共阴极和共阳极。为此,我在 cfg.h 文件之一中将一些预处理器指令设置为配置 -

#define _COMMON_CATHODE_
#undef  _COMMON_ANODE_

最初分别设置或重置两个宏时,它工作正常。但是后来当我对这些宏执行更改时,我发现在编译过程中没有考虑这些更改,因此我仍然得到旧数据。

一些解决方法 - 如果我对源代码进行一些更改,例如更改要显示的文本,那么新版本将以定向形式显示文本。

我尝试为此寻找解决方案,但无法获得类似的案例。

如果有人有任何可能的解决方法,请告诉我。

【问题讨论】:

避免引入以“_”开头的标识符(大写字母)。 【参考方案1】:

Codebench 有同样的问题(它大致基于 Eclipse)。 软件的构建版本存储在定义中,但如果没有完成干净的构建,则更改将不会应用,这让我很困扰,不确定是否有不清理构建的解决方法。 唯一对我有帮助的是在构建之前清理项目,所以:

项目 -> 属性 C/C++ 构建 设置 构建步骤标签

在预构建步骤中添加“make clean”。

因为对你来说它不像构建版本,我能想到的另一个解决方案是使用不同的宏定义集创建 2 个配置,这意味着从源代码中获取你的定义并将它们移动到项目设置中。

项目 -> 属性 C/C++ 通用 路径和符号 符号选项卡 GNU C++GNU C 取决于项目

在同一屏幕上,在 管理配置 页面创建一些配置,并为每个配置设置所需的定义。您的目标文件将存储在单独的文件夹中,因此它们不会混淆。

【讨论】:

我尝试了第二个选项,但仍然无法正常工作。我认为您的第一个选项会起作用,但我收到“make clean”错误,找不到某些文件。我也意识到每次更改宏都不是好主意。所以,我为不同的配置创建了不同的项目。到目前为止,我的工作正在进行中,但我仍然没有解决确切的问题。目前我正在为不同的配置使用不同的项目绕过它。

以上是关于Eclipse 问题 - 编译期间不考虑在 .c 和 .cpp 文件中定义的预处理的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse在运行或调试期间没有使用gradle依赖jar

尝试在 ldebug.c 中包含 httpclient.h 会导致编译期间出错

如何让 C 预处理器在编译期间执行代码?

开发 C 编译此代码,但在文件创建期间给出 err 3221225477

在 Eclipse IDE 中发布构建期间发生错误?

eclipse-在编译项目时js特别慢的问题