"error C2109: 配列または、ポインターでない変数に添字が使われました" に関する原因と対処

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

スポンサード リンク

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

コンパイルエラーメッセージ:
error C2109: 配列または、ポインターでない変数に添字が使われました。

ソース(バグ有り):

//プログラムのファイル名とフルパスを取得するサンプル

#include <Windows.h>
#include <stdio.h>

int main(int argc, char **argv) { 
char *fileName;
char fileFullPath[MAX_PATH[1];
GetFullPathName(argv[0], MAX_PATH+1, fileFullPath, &fileName);
printf("実行ファイルのフルパス:%s\n", fileFullPath);
printf("実行ファイルのファイル名:%s", fileName);
return 0; }


原因:
添え字が使用されていますが対象が配列、またはポインタではありません。

この例ではMAX_PATH[1]と定数(配列、あるいはポインタではない)に対して添え字が使用されています。

対処:
添え字が使用されている対象を確認します。


ソース(修正済み):

//プログラムのファイル名とフルパスを取得するサンプル

#include <Windows.h>
#include <stdio.h>

int main(int argc, char **argv) { 
char *fileName;
char fileFullPath[MAX_PATH+1];
GetFullPathName(argv[0], MAX_PATH+1, fileFullPath, &fileName);
printf("実行ファイルのフルパス:%s\n", fileFullPath);
printf("実行ファイルのファイル名:%s", fileName);
return 0; }

スポンサード リンク



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