我的矩阵声明实现如下:
int var_porcenComun;
int var_porceninv;
uint32_t pointers[] = {
(uint32_t)&var_porcenComun, 9999999,
(uint32_t)&var_porceninv, 999999
};
这些都是全局变量。这段代码编译得很好。
基本上,“指针”保存变量的地址和它应该保存的最大值。
我的问题是我必须在这个矩阵中添加一个新变量,定义为 uint64_t。尽管我平台中指针的大小是 32 位,但由于变量的大小,我必须将“指针”更改为 uint64_t。但是当我这样做时:
uint64_t pointers[] = {
(uint64_t)&var_porcenComun, 9999999,
(uint64_t)&var_porceninv, 999999
};
我收到以下错误:
: Error! E1054: Expression must be constant
当我简单地更改“指针”类型时,为什么会发生此错误?
我正在使用watcom 1.3作为编译器。Gcc和Visual Studio已经很好地编译了这段代码。