我正在将一个项目从 CubeIDE (GCC) 迁移到基于 Arm® 的微控制器 uVision (ARM Compiler 5) 的最全面的软件开发解决方案,并且在使用__align
关键字时遇到了困难。
在 CubeIDE 中编译良好的 CubeIDE 代码:
#include <stdalign.h>
typedef struct {
volatile alignas(uint32_t) uint16_t imageDark[320];
} test_results;
第一个问题是 uVision 找不到 <stdalign.h> ,它是C 编程语言标准库的一部分:
..\Src\device_tests.c(3): error: #5: cannot open source input file "stdalign.h": No such file or directory
所以我删除了 <stdalign.h> 并基于这些 KEIL 文档将我的代码重写为
typedef struct {
volatile __align(__ALIGNOF__(uint32_t)) uint16_t imageDark[320];
} test_results;
现在我收到以下错误:
..\Src\device_tests.c(46): error: #80: a storage class may not be specified here
volatile __align(__ALIGNOF__(uint32_t)) uint16_t imageDark[320];
..\Src\device_tests.c(46): error: #328: invalid storage class for a class member
volatile __align(__ALIGNOF__(uint32_t)) uint16_t imageDark[320];
任何有关如何在 uVision 中进行对齐的帮助将不胜感激。