我在正確的方式中定義我在代碼中使用的常量時遇到了一些問題。儘管我在How do I use extern to share variables between source files?上看過Jonathan Leffler的優秀帖子,但我似乎誤解了一些東西。這是設置:常量的正確定義
/* 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]
這是奇怪的,因爲在我看來,我做給數組常量在編譯時已知的值。 (通常這些數組長度錯誤會導致一些段錯誤,在這種情況下它們不會)。任何想法?
除了你的問題,因爲這樣的,你有你正在編譯C代碼爲C++,這個問題該不是一個好主意。特別是''const'限定變量的處理在兩者之間是不同的。 –
是的,我有那種鬼鬼祟祟的感覺,用C++混合C會導致一些問題,但不幸的是我無法改變它; D –