以下结构是否相同?

cho*_*hki 3 c++

我有一个结构定义如下:

typedef struct {
    string foo;
} A, B;
Run Code Online (Sandbox Code Playgroud)

我还有一组功能如下:

void Init(A *p) {
    p->foo;
}
void Init(B *p) {
    p->foo;
}
Run Code Online (Sandbox Code Playgroud)

gcc抱怨说Init正在被重新定义.我可以简单地删除第二个Init函数吗?与B的类型相同吗?

Ale*_*nov 5

是的,A和B 基本上只是同一类型的不同别名.

我认为如果给结构本身命名,代码会更清楚,并定义Init为一个带有指向结构的指针的函数:

struct MyStruct{
    string foo;
};
typedef MyStruct A, B;

void Init(MyStruct *p) {
    p->foo;
}
Run Code Online (Sandbox Code Playgroud)

然而,这只是个人偏好.