typedef struct {
int data;
int text;
} S1;
但是我发现很多C++提供的标准头文件里通过VS的转到定义,最后找到的是这样的:
typedef struct _Mtx_internal_imp_t *_Mtx_imp_t;
typedef struct _Cnd_internal_imp_t *_Cnd_imp_t;
我试过通过VS的功能寻找 _Mtx_internal_imp_t 这个结构体的定义,发觉一直就指向了这条,应该是说明这里是定义结构体并重新定义了别名的,但是疑问就出来了,通常定义结构提不是应该是
typedef struct{
X XXX;
X XXX;
}XX
这种形式的,但是这里没有了中间的{}和成员,这种是正常的吗?我找了下资料都没有详细说明这种的情况,该如何理解.
上面的头文件是:xthrcommon.h
5 个解决方案
#1
typedef struct _Mtx_internal_imp_t *_Mtx_imp_t; 表示_Mtx_imp_t 为 结构体_Mtx_internal_imp_t 的指针。结构体_Mtx_internal_imp_t 在其它地方定义了。
呵呵, 要一个字一个字的解释, 等待老师
呵呵, 要一个字一个字的解释, 等待老师
#2
typedef struct _Mtx_internal_imp_t *_Mtx_imp_t;
中的_Mtx_internal_imp_t 其实是定义的,只不过被封装起来,我们看不到
中的_Mtx_internal_imp_t 其实是定义的,只不过被封装起来,我们看不到
#3
其实我知道这个就是却了一个改名的定义,但是正常应该有一个定义结构体的代码,正常VS有一个功能是转到定义,但是我通过这个功能最后没有办法找到这个定义,所以我才产生一个疑问:
难道不需要定义就能改名?
#4
1. typedef struct _Mtx_internal_imp_t *_Mtx_imp_t;
这行定义的是一个指针类型。该指针类型所指向的数据为struct _Mtx_internal_imp_t
2. 即使程序中还从来没有struct _Mtx_internal_imp_t 的具体定义,也可以直接定义它的指针类型。 这叫做incomplete datatype。 因为对于编译器来说,指针类型的size是确定的,是4字节(对于32位编程)或者8字节(64字节)。即使此时编译器对于struct _Mtx_internal_imp_t 具体是什么、size都一无所知,也不影响编译器对该指针类型的对象实例的声明、定义、分配内存空间。
这行定义的是一个指针类型。该指针类型所指向的数据为struct _Mtx_internal_imp_t
2. 即使程序中还从来没有struct _Mtx_internal_imp_t 的具体定义,也可以直接定义它的指针类型。 这叫做incomplete datatype。 因为对于编译器来说,指针类型的size是确定的,是4字节(对于32位编程)或者8字节(64字节)。即使此时编译器对于struct _Mtx_internal_imp_t 具体是什么、size都一无所知,也不影响编译器对该指针类型的对象实例的声明、定义、分配内存空间。
#5
typedef 的用法,不是结构体的写法
#1
typedef struct _Mtx_internal_imp_t *_Mtx_imp_t; 表示_Mtx_imp_t 为 结构体_Mtx_internal_imp_t 的指针。结构体_Mtx_internal_imp_t 在其它地方定义了。
呵呵, 要一个字一个字的解释, 等待老师
呵呵, 要一个字一个字的解释, 等待老师
#2
typedef struct _Mtx_internal_imp_t *_Mtx_imp_t;
中的_Mtx_internal_imp_t 其实是定义的,只不过被封装起来,我们看不到
中的_Mtx_internal_imp_t 其实是定义的,只不过被封装起来,我们看不到
#3
其实我知道这个就是却了一个改名的定义,但是正常应该有一个定义结构体的代码,正常VS有一个功能是转到定义,但是我通过这个功能最后没有办法找到这个定义,所以我才产生一个疑问:
难道不需要定义就能改名?
#4
1. typedef struct _Mtx_internal_imp_t *_Mtx_imp_t;
这行定义的是一个指针类型。该指针类型所指向的数据为struct _Mtx_internal_imp_t
2. 即使程序中还从来没有struct _Mtx_internal_imp_t 的具体定义,也可以直接定义它的指针类型。 这叫做incomplete datatype。 因为对于编译器来说,指针类型的size是确定的,是4字节(对于32位编程)或者8字节(64字节)。即使此时编译器对于struct _Mtx_internal_imp_t 具体是什么、size都一无所知,也不影响编译器对该指针类型的对象实例的声明、定义、分配内存空间。
这行定义的是一个指针类型。该指针类型所指向的数据为struct _Mtx_internal_imp_t
2. 即使程序中还从来没有struct _Mtx_internal_imp_t 的具体定义,也可以直接定义它的指针类型。 这叫做incomplete datatype。 因为对于编译器来说,指针类型的size是确定的,是4字节(对于32位编程)或者8字节(64字节)。即使此时编译器对于struct _Mtx_internal_imp_t 具体是什么、size都一无所知,也不影响编译器对该指针类型的对象实例的声明、定义、分配内存空间。
#5
typedef 的用法,不是结构体的写法