我在以正确的方式定义我在代码中使用的常量时遇到了一些麻烦。虽然我在How do I use extern to share variables between source files?,我好像误会了什么。这是设置:
/* constants.h */
extern int NUM_PARTICLES;
extern int LIGHTSPEED;
#include "constants.h"
int NUM_PARTICLES=104;
在random.h
或
#include "constants.h"
int LIGHTSPEED=104;
中main.c
,分别。NUM_PARTICLES
在 main.c 中使用
30: double ghosts[NUM_PARTICLES][4];
31: double output[NUM_PARTICLES][3];
虽然这件事有效,但我收到以下警告,
main.c: In function ‘int main()’:
main.c:30:32: warning: ISO C++ forbids variable length array ‘ghosts’ [-Wvla]
main.c:31:32: warning: ISO C++ forbids variable length array ‘output’ [-Wvla]
这很奇怪,因为在我看来,我确实给数组一个在编译时已知的常量值。(通常这些数组长度错误会导致一些段错误,在这种情况下它们不会。)有什么想法吗?