我有一个结构定义如下:
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的类型相同吗?
是的,A和B 基本上只是同一类型的不同别名.
我认为如果给结构本身命名,代码会更清楚,并定义Init为一个带有指向结构的指针的函数:
struct MyStruct{
string foo;
};
typedef MyStruct A, B;
void Init(MyStruct *p) {
p->foo;
}
Run Code Online (Sandbox Code Playgroud)
然而,这只是个人偏好.