语法错误 : 缺少“;”(在“类型”的前面)”—— C语言标准

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.c
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 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 文件

  • 18
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值