管理

173阅读 0评论2008-11-19 FOQoVbA
分类:

用惯了GCC编译器,也就容易将C语言的写法和其它的写法混淆起来。虽然在GCC平台上可以顺利编译,但是在其它编译器比如Microsoft C++编译器下就有可能编译出错了。看下面这段代码:

#include 
int main(void){
     char *s1 ;
     s1 = "Hello";
     char *s2 ;
     s2 = "World";
     printf("%s %s\n",s1,s2);
     return 0;
}

它看上去是可以执行的,在GCC编译器下它确实也是可以执行的。但在VC++中则不能执行,准确地说,在未开启编译器选项为标准C99的情况下,是会编译出错的。

按如上所示的编译器在C89标准下编译,GCC pass,MS C++ fatal。错误指示会在s2 = "World"; 这句话上,错误代码通常为

error C2143:语法错误:缺少“;”(在“类型”的前面)

要是您的类型刚好由typedef来定义的话,则会出现错误代码:

error C2275:“your_type”:将此类型用作表达式非法

下面两幅截图展示了以上两种错误。因为在变量声明环节出了错误,因此会引发一连串的错误,包括变量未定义等错误。

建议:为了保持源码能够保持跨编译器特性,我们最好能够按旧时的写法来写(C89)直到它确实被淘汰为止。

posted on 2008-09-16 02:22 阅读(56)    所属分类:


--------------------next---------------------

上一篇:C语言作用域、声明以及定义
下一篇:管理