2012-06-20 79 views
4

我的环境是windows XP SP3 + '微软(R)32位C/C++优化编译器版14.00.50727.762为80x86的',过程如下:是编译器错误还是c语言功能?

F:\车间\ vc8proj \控制台>型TC

int main(void) { 
     // do some thing. 
     { 
       int i; 
       { 
         i = 3; 
         goto abc111; 
       } 
abc111: 
     } 
     return 0; 
} 

F:\车间\ vc8proj \控制台> CL/MD TC微软(R)32位C/C++ 优化编译器版14.00.50727.762为80x86的

版权所有(C)微软公司。版权所有。

t.c t.c(10):error C2143:syntax error:missing';'之前 '}'

F:\车间\ vc8proj \控制台> VIM TC

F:\车间\ vc8proj \控制台>型TC

int main(void) { 
     // do some thing. 
     { 
       int i; 
       { 
         i = 3; 
         goto abc111; 
       } 
abc111: 5201314; 
     } 
     return 0; 
} 

F:\车间\ vc8proj \控制台> CL/MD TC微软(R)32位C/C++ 优化编译器版14.00.50727.762为80x86的

版权(C)微软公司。版权所有。 (C)微软公司。微软(R)增量链接器版本8.00.50727.762版权所有 (C)微软公司。版权所有。

/out:t.exe t.obj

F:\车间\ vc8proj \控制台>

在Linux操作系统相同的情况下,太???

回答

10

这是一种语言功能。标签只能是标记语句的一部分,并且该语句需要终止;。只需在标签后面添加分号即可。

int main(void) { 
     // do some thing. 
     { 
       int i; 
       { 
         i = 3; 
         goto abc111; 
       } 
abc111: ; 
     } 
     return 0; 
} 

也适用。

1

那么这是语言功能。这是强制性的,应该有一个我们提到的标签声明。

如果标签后没有声明,那么只需放';'终止语句,或者您可以在标签后面写入返回语句。