我之前写程序,一直是类C的风格,但用g++编译器。因为喜欢面向过程的设计,又觉得c++的某些特性非常的方便。一天心血来潮,把几段程序移植到gcc,遇到几个小问题,以本文记录。
C++的继承,多态,泛型模板之类高级特性,C语言压根没有。这里也不做比较。本文中C语言都用gcc来编译,C++用g++来编译。每个例子都是g++可以通过,但gcc不能通过的情况。并给出如何让gcc通过的方法。
1、变量声明的位置
g++可以正常编译的代码
gcc中,会报变量i的声明不合法。c语言的变量声明必须在函数开始处,所有的代码之前。例如上图中注释的位置。如果函数很长的话,不能再作用域内随时声明变量,还是很不方便,也容易造成更多名字冲突。
别扭度:★★★★☆
2、函数名不可以相同
g++正常编译代码
在g++下,上面两个函数可以同时定义。参数不同,编译器都会编译成不同的函数。这也是支持多态的体现。
gcc下,函数名是不可以重复的。会报错重复定义。代码移植的时候,只能把他们改成不同的可爱的