发信人: 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]
  | 
 
 
 |