1.注释问题,C语言中"//"注释是非法的,解决方法:换成/**/的形式
2.C语言中没有BOOL类型
可以用int型替换
3.C没有内联函数"inline"
4.C语言中没有类
解决方法:使用结构体代替,结构体不应具有成员函数,对于有继承关系的类,在命名方面可以采取一些有效的措施以方便进行改写,例如类C继承了类B,B又继承了类A,结构体C可以这样命名以体现继承关系: struct A_B_C{....},并以类似的命名方法处理虚函数。
可以在结构体内添加一个指向自身的指针,通过向其他函数传递该指针以实现原有类的功能。
另:注意某些用到了this指针的函数。
【如果用到类继承,那就不要改程序了,C的结构不能继承的。最好看懂程序,用C重新编写。】
5.C语言中没有重载
解决方法:对一个函数的所有重载重新定义相应的拥有不同函数名的函数。如果你要改写的C++代码中充满了运算符重载,这将由其头疼。修改对应的函数时一定要仔细确认其传入的参数类型,以选择合适的替换函数。
6.C中函数的形参不能有默认值。例如声明函数时可能有如下错误:void func(int a=0); /*ERROR*/ 修改时有可能会修改到对应的该函数被调用处
7.变量需先声明再使用。下面的写法在C中是编译不通过的:
注:for,if等块语句中声明是允许的,如下是正确的:
8.for(int i = 0; i<10; i++) /*ERROR*/ 这样的变量定义是不允许的,方法是把 i 提到前面去声明。
注:在对c++源码改写时,进行变量声明提前的时候,要小心犯某种错误
例子:{
int x=p; /*ERROR*/
}
如果单纯的把int x=p;放到段首,如下:
{
}
编译将通过,但这却是错误的。因为这样修改的话,p在修改成3之前就被赋值给x! 保险的修改方法应该是:
{
}
9.这样的语法是编译不通过的
.....
10.危险的陷阱:#define宏定义
在一些代码库 (尤其是底层库中) 可以看到宏的某些特性 (如用 # 字符串化, 用 ## 连接等等),甚至是多层宏的嵌套,这些代码在C++中能够很好的编译,但到了c语言环境下,一个微小的不符c语言规范的语句将导致编译无法通过,而且报错提示千奇百怪,解决办法:细心再细心,一层一层的解开分析
11.C与C++代码在工程中混合的问题
1)在.c文件中删除#include "stdafx.h"
2)Alt+F7,该文件不使用预编译头
3)在所有头文件中(.h)中(其实不一定要所有,关键是那些被.c文件调用的函数的头文件),起始处加上:
结束处加上:
例如:
a.h头文件中的内容:
#endif
a.cpp文件中的内容:
b.h头文件中的内容:
.......
{
func( 100 );
}
原文:http://hi.baidu.com/evevil/item/a60063ce8be6530bad092f0b
/************************************************************************************************************
*********************************************华丽丽的分隔线*********************************************
********************************************************************************************************/
c中没有c++中的文件会分为.cpp .h c中只有.c —— 百度知道。。
1。为每个类写一个结构,结构名和类名一样,把类的所有成员变量(包括继承来的)都放在结构中,这样成员函数中队成员变量的引用就不需要改动了。变量的声明也不需要改动。
2。把类的所有成员函数(包括继承来的)列出来,把同名的函数(包括虚函数)都改命。然后修改函数中对类中其他成员函数的调用。
3。列出所有类的实例,创建实例时按顺序调用所有的构造函数,实例销毁时按顺序调用所有的析购函数。
4。修改语法
函数不要放结构里。
static的成员变量也不要放结构里。
——————————————————————小木虫 http://emuch.net/html/200908/1485930.html
另外还有一个网址,http://www.cppblog.com/franksunny/archive/2007/11/29/37510.aspx C中如何调用C++函数?