c语言 - 从 ARM 5 迁移到 ARM 6 编译器:使用未声明的标识符'__Vectors'



目前正在Keil uVision中将一个大型C语言项目从ARM 5迁移到ARM 6编译器。其中一个文件是第三方文件。让我难倒的一个错误是error: use of undeclared identifier '__Vectors' .在同一文件中,有一些用于各种编译器的#define指令,对于 Keil 情况,它只有

#elif (defined __CC_ARM)
  extern unsigned char __Vectors

适用于 ARM 5。ARM 6 现在基于 clang,所以我想知道这是否是问题所在,如果是这样,新的 __Vectors 关键字应该定义为什么。

我使用的是最新版本(版本 5.2.0(的 CMSIS 和最新版本的特定 STM 设备支持。

第三方文件的问题在于它没有必要的 ARM 6 编译器#define情况,这与 ARM 5 的#elif (defined __CC_ARM)不同。

缺少的行是:

#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
     extern unsigned char __Vectors;

似乎是对中断向量表的引用。

它不是试图"定义一个关键字";它是声明一个外部变量。变量通常来自链接器脚本,因此您需要在那里挖掘。

如果代码不使用变量,你当然可以删除它,但也许它以某种方式操作中断向量表,因此需要访问它。

最新更新