我正在以这种方式在我的项目中使用结构:
typedef struct
{
int str1_val1;
int str1_val2;
} struct1;
和
typedef struct
{
int str2_val1;
int str2_val2;
struct1* str2_val3;
} struct2;
我是否有可能以某种方式破解这个定义,我只使用我的代码类型,比如
struct2* a;
a = (struct2*) malloc(sizeof(struct2));
不使用关键字struct
?
答案 0 :(得分:2)
是,如下:
struct _struct1
{
...
};
typedef struct _struct1 struct1;
struct _struct2
{
...
};
typedef struct _struct2 struct2;
...
struct2 *a;
a = (struct2*)malloc(sizeof(struct2));
答案 1 :(得分:0)
是的,您可以使用typedef'ed符号而无需struct关键字。编译器只是将该名称用作您之前定义的结构的别名。
关于您的示例的一个注释,malloc返回指向内存的指针。因此,您的陈述应为
a = (struct2 *)malloc(sizeof(struct2));
答案 2 :(得分:0)
只是为了分享,我已经看过这种方法,虽然我个人不喜欢它(我喜欢所有名字和标记= P,我不喜欢在malloc中使用变量名),有人可能。
typedef struct {
...
} *some_t;
int main() {
some_t var = (some_t) malloc(sizeof(*var));
}
答案 3 :(得分:0)
作为脚注。如果您使用C ++编写代码,那么您不需要执行typedef;结构是一种自动的类型。