c++ - 以下结构是否为同一类型?

标签 c++

我有一个定义如下的结构:

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/

相关文章:

c++ - 将分钟转换为天、小时、分钟和秒

c++ - isFollowingCamelCaseConventionInCPlusPlus more_import_than_readability?

c++ - vector 迭代器不兼容 : DEBUG

c++ - 64位部署

c++ - 安装 socket.io C++

c++ - std::is_trivially_copyable 太强了,我应该用什么来代替?

c++ - 将非类库分离为 header 和实现的方法

c++ - Libpcap - 接收与发送数据包

c++ - 为什么 uint8_t 在分配给取消引用的 uint32_t 指针时用完 4 个字节?

c++ - boolean 函数问题