以下结构是同一类型的吗
Are the following structs the same type?
我有一个结构定义如下:
typedef struct {
string foo;
} A, B;
我还有一组功能如下:
void Init(A *p) {
p->foo;
}
void Init(B *p) {
p->foo;
}
gcc抱怨Init正在被重新定义。我可以简单地删除第二个Init函数吗?A和B是同一种类型吗?
我认为,如果给结构本身起一个名字,并将Init
定义为一个带指针的函数,代码会更清楚:
struct MyStruct{
string foo;
};
typedef MyStruct A, B;
void Init(MyStruct *p) {
p->foo;
}
不过这只是个人喜好。
是。B是结构定义上定义的A的别名
它们都是一样的。在C中由于它们在结构上相同,在C++中,因为A
被视为联系目的;这几乎和你写的一样:
struct A { string foo; };
typedef A B;
相关文章:
- 没有类型结构绑定不起作用?
- 如何使用指针连接两种不同的节点类型(结构)?
- 无法汇总初始化类型结构的变量,其中包含在类模板中的位字段成员
- 您如何声明类型结构的堆栈?在C 中
- 访问指向相同类型结构的指针
- 静态数据类型(结构)的组织
- 创建类型结构的指针阵列
- 处理类型结构数组
- 嵌入式 C++:在 C++ 中初始化易失性类型结构
- Mac OSX的c++中的变量类型结构(oaidl.h)
- 嵌套类型:结构与类
- 如何在 python 中实现 c++ 类型结构
- 如何使用类型结构定义双端队列(双面队列)
- 删除类型结构的元素形式向量
- 从类型结构的向量中删除元素
- 在c#、c++和java中创建python弱类型结构的强类型版本
- 从较大的数据类型(结构)转换为较小的数据类型
- 使用QGLShaderProgram从Qt传递自定义类型(结构体)统一到GLSL
- 如何:公开c++数据结构/类型(结构体,枚举)供c#使用
- 按值将类型结构传递给函数,错误:声明"average"中的两个或多个数据类型!!-