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;
}

浙公网安备 33010602011771号