首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >错误类型:语法错误:‘C2143’前缺少';‘

错误类型:语法错误:‘C2143’前缺少';‘
EN

Stack Overflow用户
提问于 2013-03-29 12:10:18
回答 3查看 56.2K关注 0票数 25

我对C编程是个新手。请告诉我这个程序出了什么问题,以及为什么我收到这个错误:语法错误C2143:语法错误:缺少';‘在’键入‘之前...

代码语言:javascript
复制
extern void func();

int main(int argc, char ** argv){
    func();
    int i=1;
    for(;i<=5; i++) {
        register int number = 7;
        printf("number is %d\n", number++);
    }
    getch();
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-29 12:18:02

我至少有8年没有使用visual了,但是Visual有限的C编译器支持似乎不允许混合代码和变量。错误行是否在int i=1;的声明中??尝试将其移动到对func();的调用之上

此外,我还会使用extern void func(void);

票数 29
EN

Stack Overflow用户

发布于 2013-03-29 12:17:49

Visual Studio仅支持C89。这意味着所有的变量都必须在函数顶部的任何其他变量之前声明。

编辑:@KeithThompson敦促我添加一个技术上更准确的描述(实际上只是纠正我的描述在某一方面不正确)。所有声明(变量或其他任何内容)必须位于块中的所有语句之前。

票数 33
EN

Stack Overflow用户

发布于 2013-03-29 12:17:45

这一点:

代码语言:javascript
复制
int i=1;
for(;i<=5; i++) {

应该按照习惯用法写成:

代码语言:javascript
复制
for(int i=1; i<=5; i++) {

因为在函数作用域中没有声明for循环变量的点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15697190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档