.c和.cpp 的 区别
2016-07-11 09:47
369 查看
在编译源文件时,C编译器和C++编译器都会对符号(函数或变量)名作某些修正,但两者采用的修正方法不同,所以两者生成的目标文件不能互相链接。
在C++中使用extern "C"可以让C++符号获得C链接特性。由于C++编译器会自动定义__cplusplus宏,所以在C语言头文件中采用这种结构可以保证无论使用何种编译器,生成的目标文件都具有C链接特性,能够与标准C编译器所生成的目标文件相链接。通常c/c++编译器会根据文件后缀来选择符号修正,所以最好把c的代码放到.c文件中,把c++的代码放到.cpp文件中。
用VC++6.0创建动态库
在test.cpp中输出c函数,如下:
1、新建Win32 Dynamic-Link Library
2、输出函数extern "C" _declspec(dllexport) void far test(); void far test(){ }
而在test.c中输出c函数,就可以这样,如下:
1、新建Win32 Dynamic-Link Library
2、输出函数_declspec(dllexport) ...
在C++中使用extern "C"可以让C++符号获得C链接特性。由于C++编译器会自动定义__cplusplus宏,所以在C语言头文件中采用这种结构可以保证无论使用何种编译器,生成的目标文件都具有C链接特性,能够与标准C编译器所生成的目标文件相链接。通常c/c++编译器会根据文件后缀来选择符号修正,所以最好把c的代码放到.c文件中,把c++的代码放到.cpp文件中。
用VC++6.0创建动态库
在test.cpp中输出c函数,如下:
1、新建Win32 Dynamic-Link Library
2、输出函数extern "C" _declspec(dllexport) void far test(); void far test(){ }
而在test.c中输出c函数,就可以这样,如下:
1、新建Win32 Dynamic-Link Library
2、输出函数_declspec(dllexport) ...
相关文章推荐
- C语言断言(assert)小结
- C学习笔记(一) C语言和汇编语言的区别
- c++库
- Java CRC 16位校验算法(仿C++)
- c++工作宝贵经验呀,我去。。。。
- 嵌入式开发为什么选择C语言
- 红黑树
- C++中的单例模式
- string 类型字符替换
- C语言lstat()函数:由文件描述词取得文件状态
- C语言fstat()函数:由文件描述词取得文件状态
- 转(Dlite)LLVM IR和C/C++函数相互调用时的注意事项
- C++11 | 正则表达式(2)
- c++中STL库简介及使用说明
- c++中STL库简介及使用说明
- 嵌入式C学习笔记(三)嵌入式开发选择C语言的原因
- C++ STL :vector 用法
- 清除scanf中的缓存
- Round A APAC Test 2017
- 嵌入式C语言实战开发详解(一)