是数组元素引用编译器实现特定的



我经常看到下面的语法被用于C数组元素引用:

int someArray[10];
(void*) a = &someArray[x];

这似乎在某些编译器(例如mingw)中增加sizeof(int)地址,在其他编译器(texas instruments)中增加sizeof(void*)地址。

将其更改为(void*) a = &(someArray[x])似乎可以解决此问题。

有什么问题吗?标准是否未定义"&"one_answers"[x]"的优先级?可移植代码的最佳实践是什么?

谢谢!Randolf

这段代码没有问题:

int someArray[10];
void *a = &someArray[x];

正确的编译器将根据sizeof(someArray[0])增加指针。

也许,你不应该问"如何编写可移植代码",而应该问如何编写即使在使用野生编译器编译时也能正常工作的代码

最新更新