CCS10.3.1编译报错#148:PieVectTable声明不兼容问题咨询
报错排查及解决步骤
- 第一步:修复
PIE_VECT_TABLE全局声明的修饰符不匹配问题
头文件F2806x_PieVect.h中对外声明的PieVectTable没有加volatile修饰符,但是源文件F2806x_GlobalVariableDefs.c里的定义带了volatile,二者类型不匹配直接触发#148报错。
直接修改F2806x_PieVect.h里的声明,改成:extern volatile struct PIE_VECT_TABLE PieVectTable; - 第二步:检查头文件搜索路径优先级,避免重复定义冲突
你当前配置的Include路径是C:\F2806x_headers\include,但报错里提示的头文件路径是C:/F2806x_headers/F2806x_headers/include/F2806x_PieVect.h,说明本地目录结构多套了一层F2806x_headers文件夹,检查是否存在多个版本的F2806x_PieVect.h文件,确保编译器搜索到的头文件就是你修改的那个版本。
你可以右键点击报错信息里的头文件路径,选择「打开文件」确认内容是否正确。 - 第三步:检查预编译宏配置是否一致
确认你的项目配置里已经正确定义了对应的芯片型号宏(比如_F28069、LITTLE_ENDIAN等),不同的宏定义会导致PIE_VECT_TABLE结构体的内存布局不同,也会触发声明不兼容报错。你可以在项目>属性>C2000编译器>预定义符号里查看已配置的宏是否和C2000Ware的示例项目一致。 - 第四步:确认C文件的头文件包含是否正确
检查F2806x_GlobalVariableDefs.c顶部是否已经包含了#include "F2806x_PieVect.h",如果没有包含头文件,编译器会用隐式声明规则,也会出现类型不匹配问题。
内容的提问来源于stack exchange,提问作者Hasan
相关产品推荐
相关产品推荐

