C和C++的关系

来源:互联网 发布:wps office for linux 编辑:程序博客网 时间:2024/06/08 19:15

面试题1:在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”?

//extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。另外,extern也可用来进行链接指定。

答案:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。

        假设某个函数的原型void foo(int x, int y),该函数被C编译器变异后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int 之类的名字

      C++提供了C连接交换指定符号extern"C"解决名字匹配问题



 面试题2:头文件中ifndef/define/endif是干什么用的?

答案:防止该头文件被重复引用


面试题3:评价一下C和C++的各自特点。如果一个程序既需要大量运算,又要有一个好的用户界面、还需要与其他软件大量交流,

应该怎样选择合适语言?

答案:C是一种结构化语言,重点在于算法和数据结构。C程序的设计首先考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

而对于C++,首先考虑的是如何构造一个对象模型,让这个模型能契合与之对应的问题领域,这样就可以通过获取对象的状态信息得到输出(或实现过程)。

对于大规模数值运算,C/C++和java/.NET之间没有明显的性能差异。不过,运算设计向量计算、矩阵运算,可以使用FORTRAN或者MATLAEAB编写计算组件(如COM)

//Fortran源自于"公式翻译"(英语:FormulaTranslation)的缩写,是一种编程语言。它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。Fortran 90之前的版本是人们所知晓的FORTRAN(全部字母大写),从Fortran 90以及以后的版本都写成Fortran(仅有第一个字母大写)。


大规模用户界面相关的软件可以考虑使用.NET进行开发(windows环境下),同时.NET对数据库的访问的支持也很好。


0 0