关于C#:使用结构时的编译器错误C2143

关于C#:使用结构时的编译器错误C2143

Compiler Error C2143 when using a struct

我正在用Visual C ++编译一个简单的.c,并编译为C代码(/ TC)
我得到这个编译器错误

error C2143: syntax error : missing ';' before 'type'

在要求简单结构的一行上

1
 struct foo test;

使用该结构的typedef也是如此。

error C2275: 'FOO' : illegal use of this type as an expression


我忘了在C语言中,您必须在任何代码之前声明所有变量。


因为您已经为该结构创建了一个typedef(因为您使用的是's1'版本),所以您应该这样写:

1
foo test;

而不是

1
struct foo test;

这将在C和C ++中都适用


您是否在前一行不小心省略了分号?如果前一行是#include,则可能必须在其他位置查找缺少的分号。

编辑:如果您的其余代码是有效的C ++,则可能没有足够的信息来确定问题所在。也许您可以将代码发布到pastebin,以便我们可以看到整个过程。

理想情况下,在将其缩小为较小的过程中,它将突然开始工作,然后您将发现问题!


C2143基本上说,编译器得到了一个令牌,它认为在当前情况下是非法的。该错误的含义之一是,实际问题可能在触发编译器错误的行之前存在。正如Greg所说,我认为我们需要查看更多代码来诊断此问题。

我也不确定为什么您在尝试弄清楚为什么它不能编译为C时认为这是有效的C ++代码这一事实有用吗? C ++在很大程度上是C的超集,因此有很多原因使有效的C ++代码在语法上可能不是正确的C代码,尤其是C ++将结构视为类!


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

1
2
3
4
5
6
7
8
9
10
11
// 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;
};


推荐阅读

    linux编译连接命令?

    linux编译连接命令?,系统,代码,环境,工具,文件,资料,电脑,百度,终端,命令,在l

    linux查询表结构命令?

    linux查询表结构命令?,系统,标准,信息,数据,地址,设备,时间,适当,软件,命令,l

    linux内核编译命令?

    linux内核编译命令?,系统,软件,环境,电脑,内核,最新,下来,官网,体系,名字,在l

    linux命令忽略错误?

    linux命令忽略错误?,系统,地址,工作,信息,设备,命令,设计,灵活,观察,标准,lin

    linux下编译文件命令?

    linux下编译文件命令?,代码,工具,信息,文件,环境,系统,源程序,编译器,终端,

    linux编译项目的命令?

    linux编译项目的命令?,系统,工作,地址,软件,工具,信息,代码,项目,命令,环境,l

    编译linux命令源码?

    编译linux命令源码?,下来,官网,系统,内核,环境,代码,软件,电脑,工具,源码,Lin

    linux编译执行命令?

    linux编译执行命令?,代码,工具,环境,系统,工作,官网,信息,文件,编译器,终端,l

    如何在linux编译命令?

    如何在linux编译命令?,代码,工具,基础,环境,百度,源程序,语言,文件,终端,编

    linux手动编译命令?

    linux手动编译命令?,代码,时报,基础,工具,百度,环境,标准,语言,源程序,编译

    树莓派linux编译命令?

    树莓派linux编译命令?,系统,技术,电脑,平台,软件,环境,鸿蒙,操作,发文,初学

    linux进入编译器命令?

    linux进入编译器命令?,系统,代码,环境,网上,基础,工作,工具,信息,时间,地址,l

    c语言编译linux命令?

    c语言编译linux命令?,代码,工具,环境,系统,基础,保险,百度,语言,源程序,文件

    linux命令编译运行?

    linux命令编译运行?,系统,代码,项目,工具,环境,官网,手机,信息,网上,文件,怎

    linux下命令行编译c?

    linux下命令行编译c?,系统,代码,平台,项目,编辑,程序,编译器,文件,源程序,语

    linux安装编译的命令?

    linux安装编译的命令?,软件,系统,工具,官网,第三,灵活,工作,环境,基础,最新,l

    linux下编译程序命令?

    linux下编译程序命令?,系统,代码,工具,环境,项目,终端,编辑,命令,编译器,程

    linux顺序结构命令?

    linux顺序结构命令?,位置,电脑,资料,情况,系统,环境,有限,名字,地址,标准,fat