C - 错误:'a'的存储大小未知

时间:2012-01-10 05:02:11

标签: c gcc struct

这是我的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: In function ‘main’:
13structtest.c:13:13: error: storage size of ‘a’ isn’t known
13structtest.c:13:13: warning: unused variable ‘a’ [-Wunused-variable]

9 个答案:

答案 0 :(得分:22)

您的结构称为struct xyx,但a的类型为struct xyzOnce you fix that, the output is 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;
}

答案 1 :(得分:4)

这样说:struct xyx a;

答案 2 :(得分:4)

您将结构定义为xyx,但您正在尝试创建名为xyz的结构。

答案 3 :(得分:4)

正确的错字

struct xyz a;

struct xyx a;

最好你可以试试typedef,轻松b

答案 4 :(得分:3)

您将结构定义为xyx,但在您的主体中,您使用struct xyz a; ,它只创建一个不同命名结构的前向声明。

尝试使用xyx a;代替该行。

答案 5 :(得分:3)

对于有这个问题的人来说,这是一个拼写错误。检查结构欺骗和结构的拼写

答案 6 :(得分:2)

在这种情况下,用户在定义及其用法方面犯了错误。 如果有人对结构进行了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;
}

答案 7 :(得分:1)

1) 在 main 函数之前声明结构体。 它对我有用。 2) 并修正变量名的拼写错误(如果有的话)

答案 8 :(得分:0)

我通过更正代码中的一个简单错误解决了我的问题。 using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> mprovinces = new List<string> { "Nova Scotia", "New Brunswick", "Prince Edward Island", "Nova Scotia" }; Console.WriteLine("Enter one of the following maritime provinces: \nNova Scotia, \nNew Brunswick, \nPrince Edward Island\n"); string input2 = Console.ReadLine(); for (int i = 0; i < mprovinces.Count; i++) { bool match = mprovinces[i] == input2; if (match) { Console.WriteLine(i); } else { Console.WriteLine("Sorry, this is not in the list"); } } } } 声明带来了错误。 应该是,

list_t new_end_code