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/CC430F5137:重命名源文件和头文件会导致"错误#148:声明与&quot 不兼容;编译时出错

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/789409/ccs-cc430f5137-renaming-source-and-header-files-causes-error-148-declaration-is-incompatible-with-error-when-compiling

器件型号:CC430F5137

工具/软件:Code Composer Studio

64位 Window 10 Pro

CCS 版本:8.3.0.00009

我在重构项目时遇到问题。 我在项目浏览器中使用了"重命名"函数、并重命名了头文件和源文件。 我在尝试编译时收到此错误:

"错误#148:声明与..."不兼容

标头:void HandleTP150_TP200ExtraData_IRQ (char、char);

来源:void HandleTP150_TP200ExtraData_IRQ (char cDataGr、char cDataNode)

通过展开文件的项目查看器查看源文件和头文件、可以看到该函数在标头签名中包含 char 参数、在源签名中包含 unsigned char 参数。 查看图片。 我尝试重命名其他文件、并获得这些错误的日志。 我出了什么问题?

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

    当你说...

    [引用 user="Jerker Dahlblom"]我在项目浏览器中使用了"重命名"函数并重命名了头文件和源文件。[/quot]

    (笑声) 假设、在 Project Explorer 视图中、右键单击文件的名称、然后选择"重命名"。  重命名头文件时、必须手动更改使用该文件名的#include 指令。  你是这样做的吗?

    我在这些源代码行中创建了一个小型测试用例...

    [引用用户="Jerker Dahlblom"]

    标头:void HandleTP150_TP200ExtraData_IRQ (char、char);

    来源:void HandleTP150_TP200ExtraData_IRQ (char cDataGr、char cDataNode)

    [/报价]

    我无法重现问题。  我怀疑还有其他事情在发生。  要获取该信息、请添加构建选项 -gen_preprocessor_listing。  请在 MSP430编译器手册中搜索该选项。  此选项会创建文本文件 tp150g.rl。  除其他外、它显示了预处理发生之前和之后的源代码行。  我认为您很有可能看到您不希望看到的内容。

    谢谢、此致、

    乔治

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

    好的、我认为"Rename"函数已更改所有 include、其中文件位于#include 中。

    谢谢,现在我在 tp150g.rl 中看到了以下内容:

    nvoid HandleTP150_TP200ExtraData_IRQ (char cDataGr、char cDataNode)
    Xvoid HandleTP150_TP200ExtraData_IRQ (unsigned char cDataGr、unsigned char cDataNode)
    e "./source/tp150g.c "598 6声明与"void HandleTP150_TP200ExtraData_IRQ (char、char)"不兼容(在"C:/dev/repos/TP-150G/header/tp150g.h "的第120行声明)

    来自头文件和源文件的签名为:

    void HandleTP150_TP200ExtraData_IRQ (char、char);<=标头

    void HandleTP150_TP200ExtraData_IRQ (char cDataGr、char cDataNode)<=源代码

    但是,如果我将标头更改为此,并将源文件保持原样:

    void HandleTP150_TP200ExtraData_IRQ (unsigned char、unsigned char);

    void HandleTP150_TP200ExtraData_IRQ (char cDataGr、char cDataNode

    它只编译 fine (?)。

    这里有一些不太正确的东西、遗憾的是、这超出了我对 CCS/C 的了解。 如果您从 Project Explorer 中查看原始屏幕截图、就会发现问题、因为即使文件中的签名相同、标题也会显示与源代码不同的签名。 它似乎与 char 数据类型有关、现在在查看之后、我也可以在其他地方看到相同的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在项目中找到了以下内容:
    #define char unsigned char