template with Clinkage
时间: 2023-07-18 09:36:11 浏览: 83
wordTemplate.zip
在C++中,当使用模板时,模板函数的名称会被C++编译器进行名称修饰。这导致在C++代码中使用模板函数时,无法直接与C语言进行互操作。为了解决这个问题,可以使用"extern C++"关键字来告诉编译器在使用模板函数时不进行名称修饰。具体步骤如下:
1. 在C++代码中声明模板函数,并使用"extern C++"关键字来告诉编译器不进行名称修饰。例如:
```
extern "C++" {
template <typename T>
void func(T t); //模板函数声明
}
```
2. 在C++代码中调用模板函数,就像调用普通的C++函数一样。例如:
```
int main() {
func<int>(1); //调用模板函数
return 0;
}
```
需要注意的是,当使用"extern C++"声明模板函数时,需要确保模板函数的定义与声明完全一致,否则会导致链接错误。同时,"extern C++"只能用于C++代码与C代码之间的互操作,不能用于C++代码与其他编程语言之间的互操作。
阅读全文