c++ - 从 C 文件调用模板函数

标签 c++ c templates template-function

我知道模板没有在 C 中定义。但是在我的例子中,我有一个用 C++ 编写的 API,它被一个用 C 编写的应用程序使用。我希望在 API 中添加一个模板函数。该函数在abc.cpp中定义如下:

template<typename T> T function_name(T param1){
  ...
  ...
  return val;
}

abc.hpp中声明如下:

template<typename T> T function_name(T);

这个函数从 xyz.c 调用为:

int a ,b = 5;
a = function_name(b);

但是,它在 abc.cpp 和 abc.hpp 中都显示以下错误:

 error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
 template<typename T>

即使使用 extern "C"也无济于事(导致错误:带有 C 链接的模板)。我的疑问是,是否有可能以这种方式调用此模板函数?如果是,如何实现?谢谢。

最佳答案

不,当然不是,C 中不存在模板函数,您无法使用 C 编译器解析模板声明。

您将不得不在 C++ 端为模板的 int 实例添加一个 C 包装器,并调用它(例如 function_int() ).

关于c++ - 从 C 文件调用模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40678385/

相关文章:

c - 像 int *array[99] = {0}, *u 这样的东西是做什么的?

c++ - 如何运行 C++ 代码以在 Raspberry Pi 上使用 Apache Webserver 与 GPIO 交互?

c++ - 数组下标的无效类型 'float*[float]'

c - 强制编译器不链接到某些目标文件

c - "= preserve do"在gdb中是什么意思

c++ - 模板类继承链接器错误

c++ - gcc 和 clang 在运算符重载解析期间隐式实例化模板参数

python - 使用模板中 url 中的查询参数,如 "?name="

c++ - 如何使用 Qpainter 将多个 qwidgets 打印到不同页面中的 pdf?

C++ 将字符串放入数组