发信人: benben1()
整理人: wenbobo(2002-12-06 22:08:55), 站内信件
|
我看一个程序时发现虽然函数用extern "C"定义,但是却在本文件内实现,
这有什么用?
Thank you!
-- 人生得意须尽欢,
末使金樽空对月。
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.102.32.49] 发信人: j2 (笑情), 信区: C 标 题: Re: extern "C"有什么用处? 发信站: 网易虚拟社区 (Tue May 25 10:14:56 1999), 站内信件
【 在 benben1 (天刀) 的大作中提到: 】
: 我看一个程序时发现虽然函数用extern "C"定义,但是却在本文件内实现,
: 这有什么用?
: Thank you!
It used to appear in DLL's code. Because DLL should "export"
some symbols(include variables and functions ), so extern "C"
declare the standard call method for it.
-- 空山新雨后,天气晚来秋。
明月松间照,清泉石上流。
竹喧归浣女,莲动下渔舟。
随意春芳歇,王孙自可留。
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.109.40.50] 发信人: ken_qian (<marquee>杀意隆), 信区: C 标 题: Re: extern "C"有什么用处? 发信站: 网易虚拟社区 (Tue May 25 12:26:55 1999), 站内信件
【 在 benben1 (天刀) 的大作中提到: 】
: 我看一个程序时发现虽然函数用extern "C"定义,但是却在本文件内实现,
: 这有什么用?
: Thank you!
原因如下:
当我们想从C++中调用C的库时,不能仅仅说明
一个外部函数,因为调用C函数的编译代码和调
用C++函数的编译代码是不同的。如果你仅说明
一个外部函数, C++编译器假定它是C++的函数
编译成功了,但当你连接时会发现很可爱的错误
(笑)。
解决的方法就是指定它为C函数:
extern "c" 函数描述
指定一群函数的话:
extern "C"{
n个函数描述
}
如果想C和C++混用的话:
#ifdef _cplusplus
extern "C"{
#endif
n个函数描述
#ifdef _cplusplus
}
#endif
另外到底有没有人当斑竹?
没人当我申请了。
Ken
13:19
-- 杀意隆在你的耳边轻声说:“我要用你的血把月亮染红!”
你的眼前一黑,接着什么也不知道了......
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 210.175.11.131] 发信人: benben1 (天刀), 信区: C 标 题: Re: extern "C"有什么用处? 发信站: 网易虚拟社区 (Tue May 25 14:50:30 1999), 转信
【 在 ken_qian (<marquee>杀意隆) 的大作中提到: 】
: 【 在 benben1 (天刀) 的大作中提到: 】
: : 我看一个程序时发现虽然函数用extern "C"定义,但是却在本文件内实现,
: : 这有什么用?
: : Thank you!
: .......
But,in general,the function defined by "extern" don't implement
in same file. If in same file,what they can get.
请解释一下C编辑器如何处理这种情况。
I support you!
-- 人生得意须尽欢,
末使金樽空对月。
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.102.32.49] 发信人: ken_qian (<marquee>杀意隆), 信区: C 标 题: Re: extern "C"有什么用处? 发信站: 网易虚拟社区 (Tue May 25 16:14:36 1999), 站内信件
【 在 benben1 (天刀) 的大作中提到: 】
: 【 在 ken_qian (<marquee>杀意隆) 的大作中提到: 】
: : 【 在 benben1 (天刀) 的大作中提到: 】
: : .......
: But,in general,the function defined by "extern" don't implement
: .......
Like this:
#ifdef _cplusplus
#define EXTERN_C extern "C"
else
#define EXTERN_C extern
#endif
#ifdef _cplusplus
extern "C"{
#endif
EXTERN_C BOOL FindLover(CHuman *human);
.............
#ifdef _cplusplus
}
#endif
实际上 extern "C" 就是告诉C++的编译器:“大哥我是C的函数,
别搞错了!”
-- 杀意隆目中神光咋现,一向清澄的眼眸中竟闪现出三分歹毒,四分杀意。
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 210.175.11.131] 发信人: magicfat (魔法胖子), 信区: C 标 题: Re: extern "C"有什么用处? 发信站: 网易 BBS (Wed May 26 05:26:43 1999), 转信
【 在 ken_qian (<marquee>杀意隆) 的大作中提到: 】 : 另外到底有没有人当斑竹? : 没人当我申请了。
该出手便出手吧。我实在是连网易太慢,还经常被踢,当版主也是耽误事。
-- ◆ 他号令便号令好了,又何必安静?
※ 来源:.网易 BBS bbs.netease.com.[FROM: surf1128.pompano.net] 发信人: zelor (张作乐), 信区: C 标 题: Re: extern "C"有什么用处? 发信站: 网易虚拟社区 (Wed May 26 19:36:59 1999), 站内信件
两位随便谁都可以啦,只要有斑竹就行。
【 在 magicfat (魔法胖子) 的大作中提到: 】
: 【 在 ken_qian (<marquee>杀意隆) 的大作中提到: 】
: : 另外到底有没有人当斑竹?
: : 没人当我申请了。
: 该出手便出手吧。我实在是连网易太慢,还经常被踢,当版主也是耽误事。
: .......
-- 世上惟三件事可以掀起我的激情:
爱情,
艺术,
编程。
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.47.185]
|
|