私はこのようなことをしようとしています:
const int array_size = 5;
string stuff[array_size];
array_size
は定数ですが、私のコンパイラはこれをコンパイルさせません。動的配列を扱わずにこれを行う方法はありますか?
編集:「エラーC2057:定数式が必要です」
C または C++ でコーディングしていると仮定して、この質問に回答しました。別の言語を使用している場合、この回答は当てはまりません。ただし、使用しようとしている言語で質問を更新する必要があります。
次のプログラムを検討してください。
int main () {
const int size = 5;
int x[size];
return 0;
}
これは C++ と C.99 の両方でコンパイルされますが、C.89 ではコンパイルされません。C.99 では、可変長配列が導入されたため、ローカル スコープの配列は、変数で指定されたサイズを取ることができます。ただし、C.99 のファイル スコープの配列は可変サイズのパラメーターを取ることができず、C.89 では、すべての配列定義は非可変サイズでなければなりません。
C.89 を使用している場合、または C.99 でファイル スコープ配列を定義している場合は、 を使用しenum
て定数値に名前を付けることができます。enum
を使用して、配列定義のサイズを設定できます。ただし、これは C++ では必要ありません。C++ ではconst
、リテラルによって初期化された整数型を使用して配列宣言のサイズを設定できます。
enum { size = 5 };
int x[size];
int main () { return 0; }
#define array_size 5
string stuff[array_size];