"C2117: '<変数名>': 指定された配列には、初期化子が多すぎます" に関する原因と対処

このコンパイルエラーの原因と対処に関して説明します。

スポンサード リンク

Microsoft Visual C++にて以下のソースでコンパイルエラーが発生します:

コンパイルエラーメッセージ:
error C2117: '<変数名>': 指定された配列には、初期化子が多すぎます。<ソース名>: note: '<変数名>' の宣言を確認してください

ソース(バグ有り):

int main() 
{
char array_overflow[4] = "abcd"; }


原因:
配列の初期化で文字が多すぎます。NULL文字の1文字も考慮が必要です。

配列の要素数と初期化で指定した文字数が異なります。

この例ではarray_overflowはサイズを4で指定していますが、初期化はabcdの4字と NULL文字の合計5文字が必要です。

対処:
初期化において十分大きい配列のサイズを指定します。

この例では abcd + NULL で サイズ =5 が必要です。


ソース(修正済み):

int main() 
{
char array_overflow[5] = "abcd"; }

スポンサード リンク



[コンパイルエラーコード、メッセージに戻る]