.c 和 .cpp 相互调用的问题

neushi 2005-06-18 10:57:09
c++代码调用c代码,在调用的函数前申明extern "C"

但是c代码想调用c++代码(一个类),应该如何办呢?
...全文
253 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwwu 2005-06-18
  • 打赏
  • 举报
回复
#ifdef __cplusplus
extern "C" {
#endif

//声明 函数
void foo()

#ifdef __cplusplus
}
#endif

否则再link的时候回提示 foo() undefined refferce
Wolf0403 2005-06-18
  • 打赏
  • 举报
回复
用一个 extern "C" 修饰的函数作为 factory
JohnTitor 2005-06-18
  • 打赏
  • 举报
回复
c代码可以调用c++代码(一个类)吗?如果可以的话那c不就是支持类了吗?
caojunliang 2005-06-18
  • 打赏
  • 举报
回复
extern "C" 在C++中才可以使用。
因为有些情况下“C”方式和“C++"对同一段代码的编译实现事不同的。
例如在这种情况下差据很大
struct node{
int i;
int j;
} temp;
如果现在从文件中读人;
文件中的数据为(16进制):31 32 33 34 35 36 37 38
在C编译
结果temp.i=0x3231 temp.j=0x3433
而在C++中为:
结果temp.i=0x34333231 temp.j=0x338373635
原因为C++中的int 为4个字节,而C中为2个自节
clack234 2005-06-18
  • 打赏
  • 举报
回复
C++调用C可以这样。

extern "C"

C.h
C2.h
}
beepbug 2005-06-18
  • 打赏
  • 举报
回复
C不能调用C++的类。C++也不能调用C++的类。你不要把类和对象搞混了。类是虚的,对象是实的。在你的目的程序里,只有对象,没有类。确切地说,你也不能调用一个对象。你只能引用某对象里的一个Public变量,或发一个消息,以触发某对象里某函数。
siyang 2005-06-18
  • 打赏
  • 举报
回复
楼上说的有道理
holymoon858 2005-06-18
  • 打赏
  • 举报
回复
不要混淆概念,

C本来就不是面向对象的,不支持类;

对函数用extern "C",只是因为C++编译时函数的名称不是声名的名字,而要加一些东西,加上extern "C"后就可以根据函数的声名的名称找到该函数。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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