C 中extern“C”含义深层探索

文章作者 100test 发表时间 2007:03:10 16:54:57
来源 100Test.Com百考试题网


1.引言

  C 语言的创建初衷是“a better C”,但是这并不意味着C 中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C 保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C 毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C 对全局函数的处理方式与C有明显的不同。

  2.从标准头文件说起

  某 企业 曾经给出如下的一道面试题:

  面试题

  为什么标准头文件都有类似以下的结构?

#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
#endif /* __INCvxWorksh */

  分析

  显然,头文件中的编译宏“#ifndef __INCvxWorksh、#define __INCvxWorksh、#endif” 的作用是防止该头文件被重复引用。

  那么

#ifdef __cplusplus
extern "C" {
 #endif
 #ifdef __cplusplus
}
#endif

  的作用又是什么呢?我们将在下文一一道来。

相关文章


高校等考试题天天练文化基础]10月23日
高校等考试题天天练文化基础]10月22日
二级C语言程序第7章函数1
二级C语言程序第6章字符型数据
C 中extern“C”含义深层探索
c 文件输入输出
高校等考试题天天练文化基础]10月20日
二级C语言程序第5章循环结构2
高校等考试题天天练文化基础]10月21日
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛