c++对c的拓展_编译检测的增强

一:全局变量检测增强:c++编译对全局变量的声明定义有严格区别

//c中全局变量的声明及定义         //c++中全局变量的声明及定义        //c++全局变量写成下列形式则报错

int a;//定义                                     int a;                                               int a;

int a;//声明 (系统自动添加extern) extern int a;                                    int a;

int a; //声明                                   extern int a;                                    int a

二:C++中形参必须有类型,返回值和实参个数会做检测

void test(x , y){           //c中形参无类型默认为int c++中编译器报错

return 0;     //c中可编译通过 c++中编译器则报错

}

int main(){

test(2);//c可编译通过 c++编译器报错

test(1,2);

}

三:严格的类型转换要求:c++中不同的类型转换一般是不能直接赋值(隐式转换除外)需要强制转换

//此代码可在c中编译通过

void test02(){

char* a=malloc(100);  //c++编译器会发出报错 需要强转char* a=(char*)malloc(100);

}

四:struct类型增强:使用结构体类型是可不使用struct关键字

struct obj{

int a;

}

void tes03t(){

obj a; //c++可编译通过 c中需要 struct obj a;

}

posted @ 2022-04-01 20:22  spking  阅读(42)  评论(0)    收藏  举报