"C2057: 定数式が必要です。" に関する原因と対処

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

スポンサード リンク

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

コンパイルエラーメッセージ:
error C2057: 定数式が必要です。<ソースファイル名> : error C2466: サイズが 0 の配列を割り当てまたは宣言しようとしました。

ソース(バグ有り):

#include "Windows.h"
#include <stdio.h>
int main()
{
int n=256;
char temp[n];
lstrcpy (temp,"test");
printf("temp=%s\n",temp); }


原因:
配列の添え字に変数を指定しました。コンパイル時には変数の値は不定であるためコンパイルできません。

対処:
配列の添え字には定数を指定してください。あるいは動的に確保する必要がある場合は、new 演算子を使用します。
newで確保する場合は、不要となったらdelete で解放する必要があります。


ソース(修正済み):

#include "Windows.h"
#include <stdio.h>
int main()
{
int n=256;
char *temp=new char[n];
lstrcpy (temp,"test");
printf("temp=%s\n",temp);
delete [] temp; }

スポンサード リンク



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