C程序调用C++程序中的函数

TechGenius 2014-11-17 07:40:11

#heah.h

namespace sig
{
double A(const double &t); //这里是声明
}




#sig.cpp

double sig::A(const double &t)
{
//这里是实现
}



#test.c

int main()
{
//这里使用
}
...全文
181 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zacharyLiu 2014-11-18
  • 打赏
  • 举报
回复
这种需求,通常都是直接将C++中的函数转化为C的函数,否则很麻烦的!!!
二进制脑袋 2014-11-18
  • 打赏
  • 举报
回复
C调用C++中C++专有特性的函数,这意味着什么?意味着你在维护一个C源代码(注意是源码不是二进制可执行映像),增加其兼容C++的能力。这个思路我认为并不值得提倡。C++提供extern “C”来兼容C的源码或静态库,这叫向后兼容。你要实现的却是向前方兼容,这样往往会伤筋动骨的——不是你的源码伤筋动骨就是编译器伤筋动骨。
Saleayas 2014-11-18
  • 打赏
  • 举报
回复
namespace sig { extern "C" double A(const double &t); //这里是声明 }
猿说编程 2014-11-17
  • 打赏
  • 举报
回复
使用extern "C",表示一C的方式编译,而不是使用C++编译器
brookmill 2014-11-17
  • 打赏
  • 举报
回复
这里有两个问题:一个是namespace,一个是引用t,c代码都不支持吧? 如果是简单的函数,比如void f(int i); 那就好办了,把这个函数声明加上extern "C"就行: #ifdef __cplusplus extern "C" { #endif void f(int i); #ifdef __cplusplus } #endif 为了实现函数重载,c++编译器会把函数的名字加上一些前缀后缀,extern "C"的作用就是告诉编译器不要这么做。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧