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.

[参考译文] TM4C1294NCPDT:具有正确的定义、但可以#39;t 正常编译?

Guru**** 2539500 points
Other Parts Discussed in Thread: PCA9539

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1187923/tm4c1294ncpdt-have-the-correct-definition-but-can-t-compile-normally

器件型号:TM4C1294NCPDT
主题中讨论的其他器件:TM4C123GH6PMTM4C123PCA9539

您好:

请参阅附加 zip 文件。

如果在程序中注释掉以下两行、则可以成功编译它、但如果没有、则无法成功编译它。

extern void VCU_Model_Chart_Init (B_Chart_VCU_Model_T * localb、DW_Chart_VCU_Model_T * localDW);
extern void VCU_Model_Chart (B_Chart_VCU_Model_T *本地、DW_Chart_VCU_Model_T *本地 DW);

程序中已经定义了"B_Chart_VCU_Model_T"和"DW_Chart_VCU_Model_T"类型。 为什么仍会发生错误?

谢谢

e2e.ti.com/.../CompilerTestCaseFiles.zip

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

    您好!

     可以提供有关您使用的工具链、编译器和版本的更多信息、以便我可以将您的问题转发给我们的编译器专家?

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

       CompilerTestCaseFiles.zip 文件中包含工具链、编译器版本的次要信息。

    CCS 11.2

    TI-CGT-ARM_20.2.7.LTS

    除了这些信息之外、您还需要提供其他信息吗?

    谢谢

    e2e.ti.com/.../7651.VCU_5F00_Model.pp.txt

    e2e.ti.com/.../4810.VCU_5F00_Model_5F00_data.pp.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="462611" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1187923/tm4c1294ncpdt-have-the-correct-definition-but-can-t-compile-normally ]"B_Chart_VCU_Model_T"和"DW_Chart_VCU_Model_T"类型已在程序中定义。 为什么仍会出现错误?

    因为这些类型名称的定义出现引用它们的函数声明之后。  这是一种查看方式...

    % findstr B_Chart_VCU_Model_T main.pp.txt
    extern void VCU_Model_Chart_Init(B_Chart_VCU_Model_T *localB,
    extern void VCU_Model_Chart(B_Chart_VCU_Model_T *localB, DW_Chart_VCU_Model_T
    } B_Chart_VCU_Model_T;
      B_Chart_VCU_Model_T sf_Chart_e;      /* '<S50>/Chart' */
      B_Chart_VCU_Model_T sf_Chart_l;      /* '<S49>/Chart' */

    第1行显示了正在运行的命令。  findstr 是一个 Windows 命令行实用程序,它显示了其中包含给定字符串的所有行。  在本例中、在预处理的文件 main.pp.txt 中搜索名为 B_Chart_VCU_Model_T 的类型。  第2-3行显示了两个函数声明、它们引用  B_Chart_VCU_Model_T  这些是编译器发出错误诊断的行。  这是因为 未 定义 B_Chart_VCU_Model_T。  第4行显示了定义  B_Chart_VCU_Model_T 的行  第5-6行显示了  B_Chart_VCU_Model_T 的后续用法 、这些用法进行了正确编译。  这与类型名称  DW_Chart_VCU_Model_T 类似

    谢谢、此致、

    乔治

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

    如果我只使用  VCU_Model_ert_rtw.zip 文件来创建 CCS 工程、则可以成功编译该工程。

    根据源代码、定义顺序似乎是正确的(这些类型名称的定义出现 在 函数声明之前)。

    在  VCU_Model.h 文件中定义了 B_Chart_VCU_Model_T。

    VCU_Model_Chart_Init (B_Chart_VCU_Model_T *本地 b、DW_Chart_VCU_Model_T *本地 DW) 在 VCU_Model_private.h 文件中定义。

    在 VCU_Model_private.h 文件中,在定义 VCU_Model_Chart_Init()之前,首先包括 VCU_Model.h。

    但是、如果我编译原始的完整工程 、将导致 未定义的问题。是否有任何方法可以解决该问题?

    谢谢!

    e2e.ti.com/.../VCU_5F00_Model_5F00_ert_5F00_rtw.zip

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

    您好!

     看起来您没有使用任何 TivaWare 库代码。 所有文件似乎都是您自己的代码。 是这样吗?

     在任何情况下、我都只尝试构建 VCU_Model.c 文件、除了一些警告消息之外没有错误。 查看我的日志。  

    我使用 blinky 示例工程作为起点、只需将所有文件复制到工程中即可。  

    我右键单击 vcu_Model.c 文件并选择"Build Selected File"

    下面是我的日志。 我使用 /ti_cgt-arm_18.12.0.LTS 编译 VCU_Model.c 文件。 有警告、但没有像您这样的错误。 请注意、我必须在 VCU_Model.h 中注释掉第38行和第39行、因为您没有提供这些头文件。  

    ****为项目 customer_code 构建配置调试****

    "C:\\ti\\ccs1011\\ccs\\utils\\bin\\gmake"-k -j 8 vcu_Model.obj -O

    构建文件:"../vcu_Model.c"
    调用:ARM 编译器
    "c:/ti/ccs1011/ccs/tools/compiler/ti_cgt-arm_18.12.0.LTS/bin/armcl /ti/TivaWare_C_Series-2.2.0.295 /ti/ccs1011/ccs/tools/compiler/ti_cgt-arm_18.12.0.LTS/include "-mv7M4 -code_state=16 --float_support=FPv4SPD16 -me -O2 -include_path="C:/Users/a0321879/Documents/CCS/TM4C/My CCS EKTM4C123GXL 2.2.0/customer_code"--include_path="C:C:C:路径="C:CCS EKC123_subsection=gv4puls=ctrad_subsection_subs=g_subsection_subs=v4g_subsection_subs=-code.com_pru_for_g_guid_g=v4page=g_gui_guide_for_ctrine_subs=-g_guide-g_subs=-g.c -g_subsepid_guide_subs=-g_guide_for_ctrine-g.c -code.g_guid_guide-ctr_guide-ctr-g_subs=g.c -code.com
    "../VCU_Model.c"、第276行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "../VCU_Model.c"、第287行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第303行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第314行:警告#225-D:函数"P18Con_do_I2C1_PCA9539"隐式声明
    "./VCU_Model.c"、第330行:警告#225-D:函数"P18Con_do_I2C1_PCA9539"隐式声明
    "./VCU_Model.c"、第341行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第357行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第368行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第384行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第395行:警告#225-D:函数"P18Con_do_I2C1_PCA9539"隐式声明
    "./VCU_Model.c"、第411行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./vcu_Model.c"、第422行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第438行:警告#225-D:函数"P18Con_do_I2C1_PCA9539"隐式声明
    "./vcu_Model.c"、第449行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第465行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第476行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第507行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第518行:警告#225-D:函数"P19Con_do_I2C1_PCA9539"隐式声明
    "./VCU_Model.c"、第534行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、行545:警告#225-D:函数"P19Con_do_I2C1_PCA9539"隐式声明
    "./vcu_Model.c"、第561行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第572行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第588行:警告#225-D:函数"P19Con_do_I2C1_PCA9539"隐式声明
    "./vcu_Model.c"、第599行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第615行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第626行:警告#225-D:函数"P19Con_do_I2C1_PCA9539"隐式声明
    "./VCU_Model.c"、第642行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第653行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第669行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第680行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第696行:警告#225-D:函数"P19Con_do_I2C1_PCA9539"隐式声明
    "./VCU_Model.c"、第707行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第738行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第749行:警告#225-D:函数"P19Con_do_I2C1_PCA9539"隐式声明
    "./vcu_Model.c"、第765行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第776行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第792行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第803行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./vcu_Model.c"、第819行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第830行:警告#225-D:函数"P19Con_do_I2C1_PCA9539"隐式声明
    "./VCU_Model.c"、第846行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第857行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第873行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第884行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第900行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第911行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "../VCU_Model.c"、第927行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第938行:警告#225-D:隐式声明函数"P19Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第1070行:警告#225-D:函数"UART7InterruptSend"隐式声明
    "./VCU_Model.c"、第1139行:警告#225-D:隐式声明函数"IR_Sens_DO1_ON"
    "./VCU_Model.c"、第1150行:警告#225-D:隐式声明函数"IR_Sens_DO1_OFF"
    "./VCU_Model.c"、第1166行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    "./VCU_Model.c"、第1177行:警告#225-D:隐式声明函数"P18Con_do_I2C1_PCA9539"
    已完成构建:"./vcu_Model.c"

    ****构建完成****

      

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

    很抱歉耽误你的回答。 因为我们上周在农历新年假期。

    我已将软件项目简化为随附的文件。

    这应使澄清问题更加容易。

    谢谢!

    e2e.ti.com/.../8132.TivaWorkspace.zip

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

    您好!

     我可以在构建项目时看到错误。 我确实看到 VCU_Model_private.h 中包含#include "VCU_Model.h"、但我不知道错误的原因。 这不是 MCU 级别的问题、我需要咨询我们的 CCS 和工具链专家。  

    编译文件:"../Source/DiDoModule/DiDoFunctions.c
    调用:ARM 编译器
    "c:/ti/ccs1011/ccs/tools/compiler/ti-cgt-arm_20.2.4.LTS/bin/armcl /ti/TivaWare_C_Series-2.2.0.295 /ti/TivaWare_C_Series-2.2.0.295/third_party/lwip-1.4.1/ports/tiva-tm4c129/include /Users/a0321879/Documents/My -mv7M4 -code_state=16 -float_support=FPv4SPD16 -me -O2 -opt_for_speed=5 -include_path="C:/Users/a0321879/Documents/My /ti/TivaWare_C_Series-2.2.0.295/third_party/lwip-1.4.1/src/include /ti/TivaWare_C_Series-2.2.0.295/third_party/lwip-1.4.1/apps /Users/a0321879/Documents/My CCS TM4C Forum customers/gtvcu_vcu"-include_v4c:/Users/a0321879/Documents/My -tru_path="/ti/TivaWare_C_Series-2.2.0.295/third_party/lwip-1.4.1/src/include/ipv4 -cn_mcu_mcu_tru_path="-cn"/ti/ccs1011/ccs/tools/compiler/ti-cgt-arm_20.2.4.LTS/include -tmcu_mcu_mcu_trus"-tru_tru_tru_tru_tru_path="-cn"-cn"-cn":tmcu_mcu_mcu_tru_tru_cus"-cn"-tru_tru_tru_tru_tru_tru_tru_tru_path="-cn"-cn"-cn"-cn"-cn"-cn":tmcu_tru_mcu_tru_tru_tru_tru_tru_ include_path="C:/Users/a0321879/Documents/My /Users/a0321879/Documents/My /Users/a0321879/Documents/My CCS TM4C 论坛客户/GT_VCU/Source/CanModule - include_path="C:/Users/a0321879/Documents/My /Users/a0321879/Documents/My /Users/a0321879/Documents/My CCS TM4C 论坛客户/GT_VCU/Source/AdcModule - include_vcu/path="C:/Users/a0321879/Documents/My CCS TMCU_VCU 论坛客户/GT_Source/Bootloader - include_v4C/tmVC/CCS 资源/VMVC4C-forum/Cles/CtmW4C/tmW4c:/Users/a0321879/Documents/My 客户/tmWVC/CtmW4C/CtmModule - include_path="C:/Users/a0321879/Documents/My /Source/DiDoModule/DiDoFunctions.c CCS TM4C 论坛客户/GT_VCU/Source/PortIsrModule"-include_path="C:/Users/a0321879/Documents/My CCS TM4C 论坛客户/GT_VCU/Source/EthernetModule"-include_path="C:/Users/a0321879/Documents/My CCS TMICMP_Forum 客户/GT_VCP/Source/DoStruct"-g_define=dit_subs=-dify_subs=dits_dive-board_subs=-trab_subs=-out_subs=-cus_subsection-board-board_subs=-out_subs_dive-d_subs=-cus_subs=-regions=-d_subs=-d_subs=-dcp_subs=-dcp_subs=-dcp_subs=-out_subs=-d_subs=-regions=-dcp_subs=-dcp_subs=-region_subs=-dcp_subs=-dcp_subs=dcp_subs=-regions=-d_

    >>编译失败
    Source/DoModule/subdir_rules.mk:9:目标'Source/DiDoModule/DiDoFunctions.obj'的配方失败
    "...\Source\DiDoModule\..\..\..\GT_VCU_Model\VCU_Model_ERT_RTW\..\GT_VCU\Source\UartModule\..\..\GT_VCU_Model\VCU_RTW\VCU_RTW\VCU_Model 21_VCU_Model \VCU_VCU_Model "、未定义的 VCU_VCU_Model 标识符为#21_T_VCU_H
    "...\Source\DiDoModule\..\..\..\GT_VCU_Model\VCU_Model_ERT_RTW\..\GT_VCU\Source\UartModule\..\..\GT_VCU_Model\VCU_RTW\VCU_Model \VCU_Model 21_VCU_Model "、"VCU_Model 21_VCU_V_UartModule\VCU_VCU_Model "、未定义的标识符为错误:#T_VCU_VCU_Model 21_VCU_VCU_V_Uart_V_Uart\V_UTOOTH
    "...\Source\DiDoModule\..\..\..\GT_VCU_Model\VCU_Model_ERT_RTW\..\GT_VCU\Source\UartModule\..\..\GT_VCU_Model\VCU_RTW\VCU_RTW\VCU_Model \VCU_Model \VCU_Model \VCU_B_20未定义"、"VB_Model _VCU_Model _VCU_VCU_Model "为错误标识符
    "...\Source\DiDoModule\..\..\..\GT_VCU_Model\VCU_Model_ERT_RTW\..\GT_VC\Source\UartModule\..\..\GT_VCU_Model\VCU_RTW\VCU_Model \VCU_Model \VCU_Model 错误:#VCU_Model 22为未定义的 VCU_Model 错误:#VCU_VCU_RTW"
    在编译"../Source/DiDoModule/DiDoFunctions.c 中检测到4个错误。
    gmake:***[Source/DiDoModule/DiDoFunctions.obj]错误1.

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

    main.c 文件最终包括 vcu_Model.h  该文件包含以下行...

    #include "..\..\GT_VCU\Source\DiDoModule\DiDoFunctions.h"
    #include "..\..\GT_VCU\Source\UartModule\UartFunctions.h"
    
    /* Block signals for system '<S49>/Chart' */
    typedef struct {
      uint8_T DOs;                         /* '<S49>/Chart' */
    } B_Chart_VCU_Model_T;
    
    /* Block states (default storage) for system '<S49>/Chart' */
    typedef struct {
      uint8_T is_active_c1_VCU_Model;      /* '<S49>/Chart' */
      uint8_T is_c1_VCU_Model;             /* '<S49>/Chart' */
    } DW_Chart_VCU_Model_T;
    

    请注意、B_Chart_VCU_Model_T 和  DW_Chart_VCU_Model_T 在包含 DiDoFunctions.h 后定义的。   DiDoFunctions.h 包含以下行...

    #include "..\..\..\GT_VCU_Model\VCU_Model_ert_rtw\VCU_Model.h"
    #include "..\..\..\GT_VCU_Model\VCU_Model_ert_rtw\VCU_Model_private.h"

    由于包含保护、VCU_Model.h 的#include 无效。  这是首次看到 VCU_Model_private.h。  它有这些行...

    #include "VCU_Model.h"
    
    extern void VCU_Model_Chart_Init(B_Chart_VCU_Model_T *localB, DW_Chart_VCU_Model_T *localDW);
    extern void VCU_Model_Chart(B_Chart_VCU_Model_T *localB, DW_Chart_VCU_Model_T *localDW);

    同样、VCU_Model.h 的#include 不起作用。  请注意、最后两行使用  B_Chart_VCU_Model_T 和  DW_Chart_VCU_Model_T  但尚未看到这些类型、这就是编译器发出错误诊断的原因。

    我不知道最佳解决方案。  一个快速的解决方案是在 vcu_Model.h 中移动这些行...

    /* Block signals for system '<S49>/Chart' */
    typedef struct {
      uint8_T DOs;                         /* '<S49>/Chart' */
    } B_Chart_VCU_Model_T;
    
    /* Block states (default storage) for system '<S49>/Chart' */
    typedef struct {
      uint8_T is_active_c1_VCU_Model;      /* '<S49>/Chart' */
      uint8_T is_c1_VCU_Model;             /* '<S49>/Chart' */
    } DW_Chart_VCU_Model_T;

    (笑声)   DiDoFunctions.h 之前。   

    谢谢、此致、

    乔治

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

    这个问题真的很复杂、但是这个方法真的很有用。 谢谢!