请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR5739 我在使用 MSP430编译器时遇到一个编译器错误( TI v21.6.0.LTS ),但当我 在这里使用在线 GDB 编译器测试代码(链接),它似乎没有问题。
我正在尝试将一个常量指针常量数组声明到 volatile uint16_t。 以下是我尝试在 CCS 中构建的配对版本的代码:
#define BUFF_SIZE 8 volatile int BufferA[BUFF_SIZE] = {0}; volatile int BufferB[BUFF_SIZE] = {0}; volatile int * const BUFFER_A_START = BufferA; volatile int * const BUFFER_B_START = BufferB; const volatile int * const arrayOfConstPointers[2] = {BUFFER_A_START, BUFFER_B_START}; int main(void) { // I'm okay the #145-D warning since it's not the problem I'm trying to solve: int * ptr = arrayOfConstPointers[0]; *ptr = 4; return 0; }
... 但编译器在第8行中对 arrayOfConstPointers 的声明给出了一个错误:"表达式必须有一个常数值"。
对于 TI 编译器、是否有一些关于 const 的特殊规则?
另外、我知道可以在链接器命令文件中使用 run_start 执行类似操作、但这给了我带来了其他问题、如果无法执行我在这里尝试的操作、我将在另一篇文章中保存这些问题。
谢谢!