web-dev-qa-db-ja.com

C-エラー:「a」のストレージサイズは不明です

これは私のCプログラムです...

#include <stdio.h>

struct xyx {
    int x;
    int y;
    char c;
    char str[20];
    int arr[2];
};

int main(void)
{
    struct xyz a;
    a.x = 100;
    printf("%d\n", a.x);
    return 0;
}

これは私が得ているエラーです...

Enterキーを押すか、コマンドを入力して続行します

 13structtest.c:関数 'main':
 13structtest.c:13:13:エラー: 'a'のストレージサイズが不明です
 13structtest.c:13 :13:警告:未使用変数 'a' [-Wunused-variable] 
21
user361697

構造体の名前はstruct xyxしかしaはタイプstruct xyz一度修正すると、出力は100

#include <stdio.h>

struct xyx {
    int x;
    int y;
    char c;
    char str[20];
    int arr[2];
};

int main(void)
{
    struct xyx a;
    a.x = 100;
    printf("%d\n", a.x);
    return 0;
}
23
ta.speot.is

次のように言ってください:struct xyx a;

4
Kerrek SB

構造体をxyxとして定義していますが、xyzという構造体を作成しようとしています。

4
Dolan Gish

正しいタイプミス

struct xyz a;

struct xyx a;

Bに簡単にtypedefを試すことができます

4
Dave A

構造体をxyxとして定義しますが、メインではstruct xyz a;を使用します。これは、異なる名前の構造体の前方宣言のみを作成します。

その行の代わりにxyx a;を使用してみてください。

3
Matthew

この問題を抱えている人にとっては、タイプミスです。構造体のスペルチェックと構造体のスペルを確認します

3
Miles C

この場合、ユーザーは定義とその使用法を間違えています。誰かがtypedefを構造に行った場合、structを使用せずに同じものを使用する必要があります。以下に例を示します。

typedef struct
{
   int a;
}studyT;

関数で使用する場合

int main()
{
   struct studyT study; // This will give above error.
   studyT stud; // This will eliminate the above error.
   return 0;
}
2
Vinay Shukla