语法错误 : 缺少“;”(在“类型”的前面)”—— C语言标准
来源:互联网 发布:门户网站源码下载 编辑:程序博客网 时间:2024/06/06 19:25
1、发现问题
最近用VS2010处理一段C代码时发现这样一类错误,源程序如下:
#include <stdio.h>#include <stdlib.h>int main(int argc, char **argv){ fprintf(stdout, "Hello C\n"); for (int i = 0; i < 10; i++){ fprintf(stdout, "%dst Hello C\n", i); } getchar(); return 0;}
编译时报错如下:
1> main.c1>d:\vs_workspace\test\test\main.c(6): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)1>d:\vs_workspace\test\test\main.c(6): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)1>d:\vs_workspace\test\test\main.c(6): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)1>d:\vs_workspace\test\test\main.c(6): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)1>d:\vs_workspace\test\test\main.c(6): error C2065: “i”: 未声明的标识符1>d:\vs_workspace\test\test\main.c(6): warning C4552: “<”: 运算符不起任何作用;应输入带副作用的运算符1>d:\vs_workspace\test\test\main.c(6): error C2065: “i”: 未声明的标识符1>d:\vs_workspace\test\test\main.c(6): error C2059: 语法错误:“)”1>d:\vs_workspace\test\test\main.c(6): error C2143: 语法错误 : 缺少“;”(在“{”的前面)1>d:\vs_workspace\test\test\main.c(7): error C2065: “i”: 未声明的标识符1>1>生成失败。
2、分析问题
一开始感觉莫名其妙,去网上查了下才知道,而VS2010的C编译器只支持C89标准,对C99标准支持不完全,而在C89标准中,变量需要放到函数体的前面声明,先声明再使用。
据说VS2013对C99的支持更完善了,已经可以随处声明变量。
现有的三种C语言标准:
- C89:89年发布,大部分编译器都很好的支持
- C99:99年发布,gcc很好的支持,微软不太感兴趣的样子
- C11:新平台也都开始支持
3、解决问题
方法一
#include <stdio.h>#include <stdlib.h>int main(int argc, char **argv){ int i;//在函数体前声明 fprintf(stdout, "Hello C\n"); for (i = 0; i < 10; i++){ fprintf(stdout, "%dst Hello C\n", i); } getchar(); return 0;}
方法二
将 .c 文件改成 .cpp 文件
0 0
- 语法错误 : 缺少“;”(在“类型”的前面)”—— C语言标准
- 【C】error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
- 语法错误 : 缺少“;”(在“类型”的前面)
- 语法错误 : 缺少“;”(在“<”的前面)
- 语法错误 : 缺少“;”(在“类型”的前面)的解决方案
- error C2143:语法错误 : 缺少“;”(在“类型”的前面)的解决方案
- 语法错误 : 缺少“;”(在“类型”的前面)的解决方案
- 语法错误 : 缺少“;”(在“类型”的前面)的解决方案
- vs2008 错误类型 : 语法错误:缺少“;”(在标识符“*”的前面)
- error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
- VS2008:error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
- error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
- VS2012 error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
- error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
- error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
- error C2143:语法错误:缺少";"(在“类型”的前面)
- error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
- error C2143: 语法错误 : 缺少“)”(在“&”的前面)
- Java实现多线程的方法-3种
- C#版本的MyBatis( C#解析XML文件并且获取SQL语句)
- 3D Touch 的实现和系统分享功能
- springmvc4 mybatis 整合 框架源码 SSM
- 《活着》----读书笔记
- 语法错误 : 缺少“;”(在“类型”的前面)”—— C语言标准
- 报错:”Gradle error : Write access is allowed from event dispatch thread only in android studio
- 一段Java程序的生命史
- 别总抱怨孩子成绩差,其真正根源在这儿
- freeline加速编译
- 关于环信在自定义(扩展)文本消息样式的问题
- centos nginx 之网站根目录路径修改
- Linux system函数返回值
- Houdini把四边面转成三角面