C++和C的源码混合使用需要了解的事
来源:互联网 发布:雷电抢购软件 编辑:程序博客网 时间:2024/06/07 00:50
你需要掌握C和C++的语法。
如果你有个c的可用源码,尽量不要去修改它,而是建个.h来输出声明,在外边的源码文件中再进行封装。
理由:
1、因为c源码里边经常是回调、结构体、多线程、全局变量满天飞,修改它是自找麻烦。
2、即便成功修改为c++文件,那么它就不能用于c的工程中了,有害无益。
当你把cpp的文件改为c编译时,错误肯定会成百上千,下面介绍错误对应的解决方法。
当你的c++文件未使用c++的特性或者使用很少时:
1、c++ 的库和类:如string.h list.h等
2、c++关键字:class bool 等
3、其他c++特性
那么你的c++文件可以当成c文件来用,少量的错误可以修改。
本人使用vs2012编译
1、如果一个c文件中的结构体写有构造函数的话
error C2061: 语法错误: 标识符“_AAA”
error C2059: 语法错误:“}”
typedef struct _AAA{char a[32];_AAA(){}}AAA;
解决方法:构造去掉,使用的时候用 memset类似函数或 手动赋值 初始化!!切记要对包含数组或指针成员的结构体初始化,否则你的程序将被判决死缓。
如下所示的用法将留下隐患:
AAA aaa;//未使用memset(&a, 0, sizeof(AAA)),aaa中的a成员是个随机值(野指针) strcpy(aaa.a, "123");//野指针指向地址已被赋值,指向的地址是未知的,什么时候修改掉不会知道。 //......未来的某一时刻,使用aaa.a将会是个乱码或者挂掉 printf(aaa.a);//此时a可能已经被改掉,你可能会看到乱码,或挂掉
2、使用不支持的关键字
error C2061: 语法错误: 标识符“xxx”
该关键字要删掉,用其他方法替换。比如bool的返回值,可以用int代替。引用& 符号传参,可改为指针 传参。
3、函数使用默认参数
error C2143: 语法错误 : 缺少“)”(在“=”的前面)
可以去掉默认参数,使用时自己赋值即可。
4、链接错误
error LNK2001: 无法解析的外部符号
c语言static函数作用域是该c文件,外边不可见,把static去掉可解。
暂时先写这么多,以后再增加。
- C++和C的源码混合使用需要了解的事
- 汇编语言和C语言的混合使用
- <c:import>标签的文件混合和代码混合使用
- C和C++的混合编译--extern “C”的使用
- C和C++混合编程之 extern “C”的使用
- C语言中需要了解的(一)
- C语言需要了解的(二)
- C语言需要了解的(三)
- 基于ARM的C语言和汇编语言的混合使用
- 使用Visual Studio2005进行C和汇编的混合编程
- 使用#ifdef _cplusplus 实现c 和 c++的混合编程
- C/C++/Linux程序员需要了解的10个工具
- 关于c/c++/obj-c的混合使用
- 汇编语言与C语言的混合使用
- 汇编语言与C语言的混合使用
- 汇编语言与C语言的混合使用
- 汇编与C/C++的混合使用
- .c和.cpp混合使用
- 【图文并茂】人人都会修改APK,美化,汉化,去广告
- VC 设置系统时间
- mongodb简单查询
- 百度地图离线API及地图数据下载工具-尝鲜篇
- Xcode运行时错误:Could not launch "*.app"--No such file or directory(Users/*/Library/...)
- C++和C的源码混合使用需要了解的事
- STM32 定时器
- NSFetchedResultsController和UITableView显示CoreData的数据时用relationship分组的方 ...
- STM32 ADC
- 把类的析构函数写成虚函数的用意
- iphone--使将对象加入NSMutableArray中 引用计数不加1
- jsp运行原理浅析
- ubuntu-12.0.4 svn ,bugzilla 整合
- LoggedFS记录所有文件篡改情况