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.

[参考译文] TMS320F28P650DK:在库中移植程序并编译程序时、CCS 中会出现与错误编号为#148和#258的结构相关的错误。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1511616/tms320f28p650dk-when-transplanting-the-program-in-the-lib-and-compiling-it-errors-related-to-the-structures-with-error-numbers-148-and-258-occurred-in-ccs

器件型号:TMS320F28P650DK

工具/软件:

尊敬的工程师:
移植程序时、会显示以下错误消息:
typedef struct  {                                 // bit descriptions
    uint32_t  position_lo;

    uint32_t  position_hi;

    uint16_t  error1;

    uint16_t  error2;

    uint16_t  data;

    uint16_t  data_crc;

    uint16_t  address;

    uint32_t  additional_data1;

    uint32_t  additional_data2;

    uint32_t  additional_data1_crc;

    uint32_t  additional_data2_crc;

    uint32_t  test_lo;

    uint32_t  test_hi;

    uint32_t  position_clocks;

//    volatile struct SPI_REGS *spi;

    uint32_t  delay_comp;

    uint32_t  sdata[16];     // Send data buffer

    uint32_t  rdata[16];     // Receive data buffer

    uint16_t  dataReady;

    uint16_t  fifo_level;

} ENDAT_DATA_STRUCT;



extern ENDAT_DATA_STRUCT endat22Data;
#148声明与"ENDAT_DATA_STRUCT endat22Data"不兼容(在第68行声明)
#258    类型 名称 "ENDAT_DATA_STRUCT"的重新声明无效 ( 在 第 66行声明)
此外、无论我如何修改数组名称的内容、都会报告与错误编号为#148和#258的结构相关的错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Lin、

    问题似乎在于结构的使用方式、而不是原始声明本身。  若要在 C++中使用结构体、不需要 extern 关键字。 只要在如上所示的头文件中定义、这就足够了。 尝试重建并查看它是否起作用。 如果不是这样、您能否在代码中发送使用/重新初始化结构(如果适用)的其他位置的片段?

    此致、

    Aishwarya

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

    尊敬的  Aishwarya:

     定义 此 结构后、   只能   在 一个 位置声明它; 此 头 文件的 extern ENDAT_DATA_STRUCT endat22Data  用于   在 其他 .c 文件中调用 endat22Data。

                在 我的 另一个 文件中使用类似的数组定义、声明和用法没有问题。

    此致、

    林浩南

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

    LIN、

    如前所述、无需 extern 关键字。 换句话说、在"pm_endat22_header.h"中、保留结构体并删除调用 extern 关键字的第68行。 在调用结构的任何.c 文件中(即"endat22.c"和 "pm_endat22_source.c")、确保在 文件顶部执行"#include pm_endat22_header.h"、并且不要再次重新声明结构( 删除 "pm_endat22_source.c"的第30行 )。 通过  在 头文件中定义结构并使用.c 文件中的#include、用户可以跨多个文件使用该结构。 无需重新声明结构体。  

    此致、

    Aishwarya

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

    Aishwarya,

    衷心感谢您的帮助。 我再次包含了 this.h 文件、现在它在修改后已成功运行。

    此致、

    林浩南

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

    LIN、

    很高兴听到问题得到解决。

    此致、

    Aishwarya