周六帮老婆改程序,她要把帮别人做的一个C++程序改成C程序,平时不用C编程,不过语言都是相通的,而且C语言的语法也比较简单。结果改起来工作量相当大,本以为一个小时就能搞定,结果弄到晚上1点多,第二天起来弄到11点才完事。
用VC6.0做编译器,Win32 Console程序,只需要将cpp文件改成.c文件即可编译。挑重点的说:
1. bool型居然没有定义,又不好定义一个枚举类型,以免拿到别的编译器下有冲突的可能。结果将所有的bool型改成int型。
2. C语言所有的变量定义必须在函数的最前面,否则编译会有问题。在C++中写的for循环语句:for ( int I = 0; I < n; i++ )编译不通过。
3. 自然要将类去掉,我全部改成了结构体,结果逻辑上出现了一个大问题。A类中将B类的对象作为成员变量,B类中将A类的对象作为成员变量,编译没有问题。结果改成结构体后,编译不通过,找不到定义。最后没办法,只要修改此种逻辑了。
4. C语言中没有类的对象,自然就不能Cout、Cin输入输出,结果全部改成printf和scanf作为输入输出函数。文件的输入输出也要修改。
修改完毕后,程序一运行,出现一个堆栈溢出的问题,初步估计是由于结构体中嵌套结构体数组引起的。由于还有别的事,就没将这个Bug修正。