
keilmdk编译多个代码时都出现了 报这两个错 还有缺少分号报错 的情况 但是代码本身没有问题 想知道是编译器哪里设置有问题

关注引自免费微信小程序:皆我百晓生
在Keil MDK环境下编译STM32项目时遇到的错误提示主要包括类型声明不兼容以及缺少存储类或类型说明符的问题。对于您提供的错误信息:
错误:#77-D: this declaration has no storage class or type specifier
这个错误通常意味着某个函数或变量的声明缺失必要的类型或存储类型(如static、extern等)。例如,您的函数MidFun在声明时可能遗漏了返回类型或函数参数类型。确保函数定义或声明遵循C语言的标准格式,如:
unsigned char MidFun(int param1, char param2); // 假设函数原型,根据实际参数调整
Error[Pe147]: declaration is incompatible with "interwork softfp"
这个错误表明编译器检测到了与指定的调用约定(interwork和softfp)不兼容的函数声明或定义。针对ARM Cortex-M处理器,通常在项目设置或函数声明中指定正确的ABI(应用二进制接口),例如采用__attribute__((pcs("aapcs-vfp")))。检查并确保所有函数声明和定义符合所选的ABI。
缺少分号报错 缺少分号的错误通常是语法错误,确保每个语句末尾都有分号。例如:
int variable; // 正确的声明,末尾有分号
int variable // 错误的声明,缺少分号
要解决上述问题,请按照以下步骤排查:
MidFun函数的声明和定义部分,确认是否完整且正确。如果问题依然存在,请提供更多关于MidFun函数的详细声明和定义信息,以便进一步分析。