error C2143: syntax error : missi 是啥错误?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了error C2143: syntax error : missi 是啥错误?相关的知识,希望对你有一定的参考价值。

在C语言中,这是一个语法错误。

在运行程序时发现了一个问题,总是提示一个错误:error C2143: syntax error : missing before type。解决方法如下:把所有变量的声明放在可执行代码之前。

出现此问题的原因在于:将文件保存成了 .c 格式。如果是cpp格式就能正常编译。改成.cpp就可以正常运行,和你变量声明的位置就没有关系了。

一般在ANSIC或者C++中,在可执行代码中随时定义变量是允许的,但是在K&RC中是不允许的,因此才会出现这个错误VC6.0、VS2008 都是用的K&RC来实现C语言的,因此编译过程中会报错。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器以及超级电脑等作业平台。

参考技术A #define maxsize 100;
#define ok 1;
#define error 0;
#define overflow -1 ;
这些宏定义,把最后的分号都去掉,不然代入的时候会带个分号的。
比如:
if(!q.base) exit(overflow);

宏代入后
if(!q.base) exit(-1;); // 这边-1后面就会多一个分号,导致提示错误

Keil C51编译报错error C141: syntax error

错误代码:

 

1 typedef unsigned char uchar
2 uchar KeyRowColumnScan()
3 {
4     GPIO_KEY = 0x0f;
5     uchar key_value = 0; // 报错行
6     // 省略
7     return key_value;
8 }

 

错误信息:

key_array.c(44): error C141: syntax error near ‘uchar’

错误原因:

由于Keil、ADS等某些遵循老的C标准的编译器,在函数定义的内部,必须把所有的局部静态变量和自动变量都声明/定义了之后,然后才能开始后续的代码书写,否则编译器会报错,将代码更改如下后,编译正确。

1 typedef unsigned char uchar
2 uchar KeyRowColumnScan() 
3 {
4     uchar key_value = 0;  // 必须在函数开始出定义所有变量
5     GPIO_KEY = 0x0f;
6     // 省略
7     return key_value;
8 }

 

以上是关于error C2143: syntax error : missi 是啥错误?的主要内容,如果未能解决你的问题,请参考以下文章

error C2143: syntax error : missi 是啥错误?

C语言问题,error C2143: syntax error : missing ';' before 'type'啥意思?

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

error C2143: syntax error : missing ')' before ''是啥意思

一个关于调用函数函参写void的错误error C2143 syntax error missing ')' before 'type'

未声明的标识符 error c2065 c2143