当前位置:   article > 正文

c++与C不兼容之处_c++ 和 c 语言之间的细微差别导致了在一些情况下,c 语言代码无法在 c++ 编译器中

c++ 和 c 语言之间的细微差别导致了在一些情况下,c 语言代码无法在 c++ 编译器中
与C不兼容之处
C++一般被认为是C的超集合(Superset),但这并不严谨。大部分的C代码可以很轻易的在C++中正确编译,但仍有少数差异,导致某些有效的C代码在C++中失效,或者在C++中有不同的行为。
最常见的差异之一是,C允许从void*隐式转换到其它的指针类型,但C++不允许。下列是有效的C代码:
1
2
3
4
    
/*从void*隐式转换为int**/
 
 int*i=malloc(sizeof(int)*5);
 
但要使其在C和C++两者皆能运作,就需要使用显式转换:
1
2
    
int*i=(int*)malloc(sizeof(int)*5);
 
另一个常见的可移植问题是,C++定义了很多的新关键字,如new和class,它们在C程序中,是可以作为识别字(例:变量名)的。
在C标准(C99)中去除了一些不兼容之处,也支持了一些C++的特性,如//注解,以及在代码中混合声明。不过C99也纳入几个和C++冲突的新特性(如:可变长度数组、原生复数类型和复合逐字常数)。
若要混用C和C++的代码,则所有在C++中调用的C代码,必须放在 extern "C" { /* C代码 */ } 之内。
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号