コードで使用する定数を正しい方法で定義するのに少し問題があります。Jonathan Leffler のすばらしい投稿を読みましたが、extern を使用してソース ファイル間で変数を共有するにはどうすればよいですか? 、私は何かを誤解しているようです。これはセットアップです:
/* constants.h */
extern int NUM_PARTICLES;
extern int LIGHTSPEED;
このヘッダーはrandom.hとmain.cで使用され、次のようになります。
#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]
私の意見では、コンパイル時に既知の定数値を配列に与えるため、これは奇妙です。(通常、これらの配列の長さのエラーはいくつかのセグメンテーション違反を引き起こしますが、この場合はそうではありません。) 何かアイデアはありますか?