代码之家  ›  专栏  ›  技术社区  ›  CiNN

使用结构时出现编译器错误C2143

  •  2
  • CiNN  · 技术社区  · 17 年前

    我在Visual C++中编译一个简单的C,编译为C代码(/TC) 我得到了这个编译器错误

    错误C2143:语法错误:缺少“;”在“类型”之前

     struct foo test;
    

    使用结构的typedef也是如此。

    错误C2275:“FOO”:非法使用此类型作为表达式

    5 回复  |  直到 8 年前
        1
  •  6
  •   p.campbell    14 年前

    我忘记了在C语言中,在编写代码之前必须声明所有变量。

        2
  •  1
  •   Greg Hewgill    17 年前

    您是否在前一行中意外省略了分号?如果前一行是 #include ,您可能需要在其他地方查找缺少的分号。

    pastebin 所以我们可以看到整个事情。

        3
  •  1
  •   Will Dean    17 年前

    foo test;
    

    而不是

    struct foo test;
    

    这将在C和C++中都起作用。

        4
  •  0
  •   17 of 26    17 年前

    您的结构类型是如何定义的?有两种方法可以做到这一点:

    // This will define a typedef for S1, in both C and in C++
    typedef struct {
         int data;
         int text;
    } S1;
    
    // This will define a typedef for S2 ONLY in C++, will create error in C.
    struct S2 {
         int data;
         int text; 
    };
    
        5
  •  0
  •   Andrew O'Reilly    17 年前

    我也不知道为什么你认为这是有效的事实,当试图找出为什么它不编译为C代码时,C++代码是有用的。C++是(很大程度上)C的超集,所以有很多原因,为什么C++代码可能不是语法正确的C代码,更不用说C++把结构当作类来对待了。