函数重载
- C 语言不支持重载,相同名字会报错
- C++支持重载,通过compile的中间流程,生成含有方法签名信息(形参类型、形参顺序、方法名称)新的方法名称(mangled name),来进行重载
- 通过 extern “C” 可以解决混编问题
重载定义
- 同一作用域类
- 函数名相同
- 参数列表不同(个数不同或类型不同)
- 返回值任意
代码
git地址:git@github.com:AlbertSnow/algorithm.git
C 调用 CPP
- CPP在cpp文件中添加
// #include <iostream>
#include <stdio.h>
extern "C" {
void CallCpp()
{
printf("++++++ Im cpp +++++++");
// std::cout << "I'm out this place";
}
}
- 注意不能有C无法访问的库
- 头文件不用加 extern
CPP 调用 C
- extern 来wrap 头文件
#include <iostream>
extern "C" {
#include "CLang.h"
}
int main() {
std::cout << "----- Cpp call c method -----\n";
CallC();
}
总结
- C不支持函数名称重载,C++支持
- external关键字
- c 调用 cpp, 在CPP的cpp文件中wrap实现
- cpp 调用 c, 在CPP的cpp文件中wrap 对c头文件的include
external
- external functionName
表示 symbol 来自于外界,先通过编译&#