怎样混合c和c++
作者:网络转载 发布时间:[ 2012/8/7 14:52:44 ] 推荐标签:
#ifdef __cplusplus
extern "C" {
#endif
步骤二:将下列行放进c头文件的下方:
#ifdef __cplusplus
}
#endif
现在你可以在c++代码中不加入任何讨厌的extern "C"而直接include你的c头文件了:
// This is C++ code
// Get declaration for f(int i, char c, float x)
#include "my-C-code.h" // Note: nothing unusual in #include line
int main()
{
f(7, 'x', 3.14); // Note: nothing unusual in the call
...
}
5、我怎样在我的c++代码中调用一个非系统的c函数
如果你要去调用一个单独的c函数,或者因为某种原因你不想包含一个声明了c函数的头文件,你可以使用extern "C"语法在你的c++代码中单独声明c函数。一般的,你需要使用完整函数原型:
extern "C" void f(int i, char c, float x);
一组c函数的声明可以用括号括起来:
extern "C" {
void f(int i, char c, float x);
int g(char* s, char const* s2);
double sqrtOfSumOfSquares(double a, double b);
}
在这之后你可以像使用c++函数一样调用它们:
int main()
{
f(7, 'x', 3.14); // Note: nothing unusual in the call
...
6、怎样创建一个可以被c代码调用的c++函数f(int, char, float)
c++编译器一定要通过extern "C"结构知道f(int, char, float)将要被一个c编译器调用,
// This is C++ code
// Declare f(int,char,float) using extern "C":
extern "C" void f(int i, char c, float x);
...
// Define f(int,char,float) in some C++ module:
void f(int i, char c, float x)
{
...
}
extern “C"告诉编译器交给连接器的外部符号应该使用c调用规范和命名变异(也是加一个前缀下划线)。既然c不支持名称重载,你不能重载几个被c程序调用的函数。
7、为什么c++/c函数调用c/c++函数会给出链接错误
如果你没有写对extern "C",你会得到链接错误而不是编译错误。这是因为c++编译器一般会使用和c编译器不同的命名变异(也是为了支持函数重载)。
8、怎样将一个c++类的对象传入或者传出一个c函数
这是一个例子:
fred.h
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11