This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320F28075:在一个文件中定义了 bool 类型、在另一个文件中未定义

Guru**** 2188665 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/823643/compiler-tms320f28075-defined-bool-type-in-one-file-undefined-in-another-file

器件型号:TMS320F28075

工具/软件:TI C/C++编译器

您好!

我们遇到了以下问题:

  1. 我们有仅包含的 HeaderFile1 和 并使用“bool”类型。 一切都在编译。
  2. 我们在同一文件夹中添加了一个新的 HeaderFile2、其中还包括 和 。 此头文件也使用“bool”类型,但不会编译(#20标识符“bool”未定义)。 此外,CCS 识别该 HeaderFile2中的“bool”定义,我可以转到其定义(F3)。 此定义位于 stdbool.h 中、与 bool 定义位于 HeaderFile1中的位置相同。

我无法解决,也无法理解。 请、您能帮我吗?

我使用的是 CCSv8和编译器版本 TI v18.1.0.LTS。

非常感谢。

此致、

帕洛马

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于一个看到以下内容的源文件...

    [引用 user="Paloma de la Fuente Vega ]]它不会编译(#20 identifier "bool is undefined)

    请按照文章 How to Submit a Compiler Test Case 中的说明进行操作

    希望能再获得一个文件。  请添加编译器选项 -gen_preprocessor_listing 和编译。  这将创建与源文件同名的文本文件、但扩展名更改为.RL。  此文件可帮助您了解预处理的作用。  请将文件扩展名.txt 添加(不替换)到此文件、并将其附加到下一个帖子。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我附上您问我的文件。

    谢谢你。

    Palomae2e.ti.com/.../ContactorsManeuver.rl.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此文件包含的内容远不止 assert.h statemap.h  对 bool 类型的引用出现在文件  ContactorsManeuver_sm.h 中  此时、未看到 include 文件 stdbool.h。  直到稍后才会发生这种情况。  即使如此、它也是间接的。  文件  F2807x_device.h 包括 stdbool.h

    我建议您更改文件  ContactorsManeuver_sm.h 以明确包括 stdbool.h

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的回答。 这是非常明确的。

    但我无法在头文件中包含 stdbool,它是自动生成的代码。 我已经检查了 RL 文件、我可以看到您说过的话、bool 定义是在使用它之后。

    重点是、我们有另一个以相同方式自动生成的文件、该文件会进行编译(使用相同的头文件和 bool 类型)。 我在使用前检查了其 RL 文件和 bool 类型定义、因此会进行编译。

    这两个头文件位于同一个文件夹和项目中。

    我想了解这两个头文件之间的区别是什么。

    此致、

    帕洛马

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Paloma de la Fuente Vega "]但我无法在头文件中包含 stdbool,它是自动生成的代码。

    也许您可以在自动生成代码之前包含 stdbool.h。   

    其中一个自动生成的文件在定义 bool 类型之前使用该类型。  您别无选择、只能使用您的调试技能来确定发生这种情况的原因以及如何解决。  RL 文件是一个您可以使用的工具。  要更好地理解它、请在 C28x 编译器手册 中搜索标题为生成原始列表文件的子章节。

    谢谢、此致、

    乔治