我有一个定义如下的结构:
typedef struct {
string foo;
} A, B;
我还有一组函数如下:
void Init(A *p) {
p->foo;
}
void Init(B *p) {
p->foo;
}
gcc 提示 Init 正在被重新定义。我可以简单地删除第二个 Init 函数吗? A 和 B 是同一类型吗?
最佳答案
是的,A 和 B 本质上只是同一类型的不同别名。
我认为如果给结构体本身起个名字,并将 Init
定义为一个接受结构体指针的函数,代码会更清晰:
struct MyStruct{
string foo;
};
typedef MyStruct A, B;
void Init(MyStruct *p) {
p->foo;
}
但这只是个人喜好。
关于c++ - 以下结构是否为同一类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9085182/