Project_OKI’s diary

エンジニアの勉強ブログ

エラーの対処2(expected ';' after top level declarator)

エラーの対処(;がない)

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

   というエラーが発生する。

   これは、宣言リストの終わりに;がないということ。

関連記事

過去の記事: