1. ARM Compiler错误与警告体系解析
1.1 编译器诊断系统架构
ARM Compiler的错误警告体系采用分层分类设计,主要分为7大核心模块:
- 预处理阶段错误(0-63)
- 语法语义错误(64-999)
- 优化相关提示(1000-1999)
- 内联汇编错误(1083-1163)
- 目标架构限制(1114-1150)
- C++特性相关(2000-2999)
- 扩展功能提示(3000+)
每个错误码包含三个关键要素:
- 错误等级:Error强制终止编译,Warning允许继续但可能影响行为
- 错误类别:通过编号前缀区分(如C4000+为架构相关错误)
- 上下文信息:包含出错位置、类型详情和预期行为
典型错误处理流程示例:
c复制// 触发#20未定义标识符错误
void foo() {
x = 5; // Error: #20: identifier "x" is undefined
}
1.2 关键错误类型详解
1.2.1 预处理阶段陷阱
-
文件包含问题:
c复制#include "missing.h" // Error: #5: cannot open input file解决方案:使用
--c99模式支持#include_next指令(错误2792) -
宏定义冲突:
c复制#define SIZE 10 #define SIZE 20 // Warning: #47-D: incompatible redefinition推荐使用
#ifndef防护宏
1.2.2 类型系统关键错误
-
指针类型转换:
c复制void* p = malloc(10); int* ip = p; // Warning: #144: incompatible pointer types正确做法:使用显式类型转换
int* ip = (int*)p -
结构体对齐问题:
c复制#pragma pack(1) struct BadAlign { char c;
