1.在C 程序中调用被C编译后的函数,为什么要加extern "C"
?
- C 语言支持函数重载,C语言不支持函数重载。
- 函数被C 编译后在库中的名字与C语言的名字不同
- C 提供了C连接交换指定符号
extern"C"
解决名字匹配问题
假设某个函数原型为void foo(int x,int y); 该函数被C语言编译后在库中提供的名字为_foo 在C 编译器则会产生像_foo_int_int之类的名字
2.头文件中的ifndef/define/endif是干什么用的?
- 头文件中的ifend/define/endif是条件编译的一种,除了头文件被防止重复引用外(整体),还可以防止重定义(变量、宏或者结构)。
3.评价一下C和C 语言的各自特点。
- C语言是一种结构化语言,重点在于算法和数据结构。
- C程序的设计首先考虑的是如何通过一个过程,对输入(或环境条件)进行处理得到输出控制。
- C 首先考虑如何构造一个对象模型,让这个模型契合与之相应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。