猿问

如下情况,是不是加不加 struct 都无所谓? 也不会对我的程序有影响吗?

问题见注释处
#include<iostream>
using namespace std;
struct animal{ //定义一个animal的结构体
int weight; // animal的成员变量“体重”
};

void main(){
animal mydog; //我的问题是,如果这里行换成 struct animal mydog;
//也就是多加了一个 struct, 发现也能正常运行。
//那么,加不加 struct 无所谓是吗? 不会对我的程序有影响吧?
mydog.weight = 45;
cout<<mydog.weight<<endl;
}

慕哥6287543
浏览 157回答 2
2回答

慕田峪9158850

最早的C编译器,是要求在结构体定义前加入struct关键字的,许多老的代码都是这么写的,但是到了C++中,以及后期的部分C编译器中,已经不再要求在定义结构体变量的时候加入struct了,所以你不加也可以。加了也无所谓。简而言之,你如果写C++代码,加不加无所谓,如果写C代码,考虑代码兼容性可以加上struct。

扬帆大鱼

加不加跟编译器有关,如果不加也可以的话,那加不加就无所谓了。如果你看过Linux内核或一些老的项目,会发现很多地方用typedef实现了这个效果(当然他们可能还有移植方面的考虑)。举个例子:typedef struct my_struct{int member_item;}my_struct_t;以后直接用my_struct_t就行了(本质上还是写了struct这个关键字的)。【反正我是习惯用typedef的,这样既简洁又不用考虑编译器是不是可以不加,而且看起来还很酷】
随时随地看视频慕课网APP
我要回答