C和C++关系的相关面试题

2022-11-02 18:09:25 浏览数 (1)

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 首先考虑如何构造一个对象模型,让这个模型契合与之相应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。

0 人点赞