VC编译C代码时错误“ syntax error : missing ';' before 'type' ”
2012-09-22 21:15
537 查看
前几天看C的多级指针,写一段代码,在编译时总报错 ——syntax error : missing ';' before 'type',以为是编译器的问题,今天下了专业版的,打了sp6补丁,可依然报错,最终将代码简写如下
#include<stdio.h>
int main(void)
{
int i = 10;
printf("i_address is %#x\n", &i);
int * p = &i;
printf("p_address is %#x\n", p);
return 0;
}
依然报错,上网查资料终于有了合理的解释以及解决办法
原因:
在vc中如果不刻意的写出文件的后缀名,是按*.cpp编译的,所以一方面原因就是我将文件保存成了 *.c 格式,如果是 *.cpp 格式就能正常编译。
其根本原因在于 ——ANSI C 或者 C++中,在可执行代码中随时定义变量是允许的,但是在K&R C中是不允许的,VC6.0 、VS2008 都是用的 K&R C 来实现 C语言的,因此编译过程中会报错。
解决办法:
把所有变量的声明和定义放在可执行代码之前。
即:
#include<stdio.h>
int main(void)
{
int i = 10;
int * p = &i;
printf("i_address is %#x\n", &i);
printf("p_address is %#x\n", p);
return 0;
}
最后,想起了最近老师让了解了linux,linux下的gcc是可以编译通过的……
#include<stdio.h>
int main(void)
{
int i = 10;
printf("i_address is %#x\n", &i);
int * p = &i;
printf("p_address is %#x\n", p);
return 0;
}
依然报错,上网查资料终于有了合理的解释以及解决办法
原因:
在vc中如果不刻意的写出文件的后缀名,是按*.cpp编译的,所以一方面原因就是我将文件保存成了 *.c 格式,如果是 *.cpp 格式就能正常编译。
其根本原因在于 ——ANSI C 或者 C++中,在可执行代码中随时定义变量是允许的,但是在K&R C中是不允许的,VC6.0 、VS2008 都是用的 K&R C 来实现 C语言的,因此编译过程中会报错。
解决办法:
把所有变量的声明和定义放在可执行代码之前。
即:
#include<stdio.h>
int main(void)
{
int i = 10;
int * p = &i;
printf("i_address is %#x\n", &i);
printf("p_address is %#x\n", p);
return 0;
}
最后,想起了最近老师让了解了linux,linux下的gcc是可以编译通过的……
相关文章推荐
- vs2005 C编译错误syntax error : missing ';' before 'type'
- 编译错误syntax error : missing ';' before 'type'原因探寻(VS 编译C文件)
- 编译错误syntax error : missing ';' before 'type'原因探寻
- 编译错误syntax error : missing ';' before 'type'
- 编译错误syntax error : missing ';' before 'type'原因探寻
- 编译错误syntax error : missing ';' before 'type'
- 编译错误syntax error : missing ';' before 'type'
- Cocos2dx 3.6源代码编译错误:syntax error : missing ')' before '{'
- VC++ 2005中编译C出错:error C2143: syntax error : missing ';' before 'type'
- VS编译错误:syntax error : missing ';' before 'type'
- VC++ 2005中编译C出错:error C2143: syntax error : missing ';' before 'type'
- VC++中编译C出错:error C2143: syntax error : missing ';' before 'type'
- 编译错误syntax error : missing ';' before 'type'
- 编译错误syntax error : missing ';' before 'type'原因探寻
- 编译错误syntax error : missing ';' before 'type'原因探寻
- VC中出现error C2143: syntax error : missing ';' before '*'错误的解决方案
- syntax error : missing ';' before 'type'错误
- syntax error : missing ';' before 'type'错误
- syntax error : missing ';' before identifier 'PVOID64' (DSHOW开发编译错误 winnt.h)
- Cocos2dx 3.6源码编译错误:syntax error : missing ')' before '{'