6种C语言代码不能被C++编译器编译

虽然C++的设计是向前兼容C的,但是有些C语言代码在用C++编译器编译时会出现编译错误。下面列出了6种情况:

    1. 在C++中规定,在调用函数时先声明,但是在C中,可以编译:
    2. 在C++中不允许一个指针指向一个常量(const变量),在C中可以:
    3. 在C中一个空(void)指针可以直接赋值给其他类型的指针,如int*,char*。但是在C++中必须显式转换:

      最常见的是malloc()函数,它返回的void*类型。在C++中必须转换(int* ptr = (int*)malloc(sizeof(int))),在C中没有必要转换(int* ptr = malloc(sizeof(int)))。
    4. 下面的短小代码可以用C编译运行,但是C++会报错。C++中常量定义必须给它初始化一个值,C不用:

    5. 这个有点蠢,但是也算一种。用C++的关键字声明变量,C++一定编译不过,但是C可以编译通过:
    6. C++的类型检查比C严格。下面这段代码在C++中报“invalid conversion from ‘int’ to ‘char*”:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注