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.

[参考译文] CODECOMPOSER:当编译器处理宏定义时 TI ARM CLANG 上的低级逻辑是什么

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1512533/codecomposer-what-the-low-level-logic-on-ti-arm-clang-when-compiler-process-the-macro-defintion

部件号:CODECOMPOSER

工具/软件:

尊敬的编译器专家:

我有关于 TI ARM CLANG 编译器的以下问题。

请参阅以下示例:

A.h files:
#define TEST 1

B.h files:
#ifndef TEST
    #define TEST 2
#endif

有两个文件给出了相同的宏定义、我想知道编译器如何处理这些宏定义:

我担心是否有风险,有时它会首先处理 B.h 文件,然后它将定义两次并导致错误发生。

同时、第二个问题是、项目属性中的预定义与 main.c 文件中的手动定义之间的 Marco 定义有什么区别?

期待您的反馈。

B.R.

Sal

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

    您好:

    以下是答案:

    1.宏的处理顺序完全取决于头文件的包含顺序。 例如、如果.h 或.c 文件具有以下行、则将首先处理 A.H 中的宏。

    #include "a.h"

    #include "b.h"

    2.这些只是定义宏的两种方法。 在工程属性中添加宏可以在构建时灵活更改宏、而无需更改源代码。

    Ajay

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

    尊敬的 Ajay:

    感谢您的澄清。

    对于问题2、预定义和源代码宏定义的顺序是什么?

    在源代码编译器方面、哪一个具有最高顺序?

    B.R.

    Sal

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

    首先处理在 tiarmclang 命令行(通过-D)上定义的宏。 请注意、如果在命令行和源代码中定义相同的宏、编译器将发出宏重新定义警告。