エラーの対処(;がない)
1. 目的
この記事では、エラーが発生した時に、どう対処したのか、またその理由について記載する。
出たエラー文
・expected ';' after top level declarator
目次
2. エラー理由
・expected ';' after top level declarator
これは、";" がトップレベルの宣言子の後ろに必要ということ。
expected ';' が ;が期待される。 つまり、;がないという意味。
after top level declarator
トップレベルの宣言子の後という意味。
トップレベルとは何かというと、関数の外側のこと。
つまり、関数の外側の宣言しているところに;が足りないといっている。
expected 'xxx' after top level declarator
xxxの部分が、{}だったり、;だったり色々ある。
エラー発生個所
typedef struct { unsigned long a; } hoge1
3. 対処
;をつける。
修正した内容
typedef struct { unsigned long a; } hoge1;
3. プログラム全体
今回の場合、プログラム全体を見た方が分かりやすいので、下記に示す。
#include <stdio.h> typedef struct { unsigned long a; } hoge1 int a; int main(){ printf("hoge1_サイズ:%lu\n",sizeof(hoge1)); }
ここのhoge1に;が付いてないので、エラーが発生する。
hoge1や、int a; がある所が、top level 。
int a; の ; がなくても同じようなエラーが発生する。
参考:
・ unsigned long aの後ろに;がない場合は
expected ';' at end of declaration list
というエラーが発生する。
これは、宣言リストの終わりに;がないということ。
関連記事
過去の記事: