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.

[参考译文] CCS/CCStudio-C2000:关于如何解析外部#define引用的问题

Guru**** 2555630 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/586403/ccs-ccstudio-c2000-question-about-how-external-define-references-are-resolved

部件号:CCStudio-C2000

工具/软件:Code Composer Studio

您好,

为了深入了解我的问题,我创建了一个简单的文件。  该文件包含两个#defines和一个空函数。

每个#defines仅用于从TI include文件重命名现有的#define,以缩短名称以方便使用。

例如:

#define CTOM_STS1  IPC_CTOMIPCSTS_IPC1      //为状态寄存器中的位重命名

IPC_CMIPIPCSTS_IPC1在 \...\v207\Mware\inc\HW_IPC.h中#定义  我没有在源代码中包含该文件,但它编译时没有错误。

"包括文件"浏览器未显示源文件的"包括文件"。  但鼠标悬停在 IPC_CMIPSTS_IPC1上,并按F3打开声明,每次都会查找并打开hw_ipc.h文件。

CCS如何知道当它所在的文件未包含时在何处查找#define?  似乎我会从工具中得到一些警告或错误。

谢谢,顺祝商祺!

史蒂夫·C.

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

    斯蒂芬

    如果要在函数主体中使用IPC_CMIPSTS_IPC1,则C编译器会出现错误。  但是在#define行中使用它不会产生错误。

    例如,这里有一个类似的代码位。  定义行没问题。  但是,只要我在代码中尝试使用John或IPC_CMIPSTS_IPC1,我就会收到一个错误。  我不是编译器专家,但我认为#define只是告诉预处理程序用定义的值替换实例。 即用IPC_COMPIPCSTS_IPC1替换John。

    如果您在代码中使用CTOM_STS1,我会看到错误。  如果未收到错误,则定义IPC_CMIPSTS_IPC1的文件必须以某种方式包含,或者可以在构建选项中定义。

    找到定义的编辑器可能是因为工作空间中有另一个项目具有该定义。  

    如果您可以导出项目并附加,我可以尝试在此处复制。

    此致,

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢John,
    是的,没有报告任何错误的文件也没有引用重新定义。 使用定义的文件也包括正确的标题。 如果我将这些内容注释掉,那么该文件会编译错误,正如您在上面所预期和证实的那样。
    此致,
    Steve