如果我想在c中编写结构,请写
typedef struct ObjectP
{
some code
}
这是合法的,但这段代码怎么样?
typedef struct Object* ObjectP
{
some code
}
为什么行 typedef struct Object * ObjectP
上存在语法错误答案 0 :(得分:5)
这不是你如何使用typedef
结构。您必须在结构之后添加类型别名,例如
typedef struct Object
{
...
} Object;
如果您想要多个类型别名,只需将它们添加到结尾,如
typedef struct Object
{
...
} Object, *ObjectP;
或您将定义分开:
struct Object
{
...
};
typedef struct Object Object;
typedef struct Object *ObjectP;
答案 1 :(得分:2)
您使用typedef
struct
指针的错误语法。
使用:
typedef struct Object
{
some code
}
*ObjectP;
现在,您可以使用ObjectP
以这种方式定义指向此struct
的指针:ObjectP ptr1_struct, ptr2_struct;
。
答案 2 :(得分:1)
结构定义应以“; ”结尾。 typedef不是结构定义的一部分。这是一个重命名惯例。
答案 3 :(得分:0)
结构定义的语法是
struct identifieropt { struct-declaration-list }
可选标识符是struct 标记;它是可以引用结构类型的名称。例如:
struct foo { int x; int y; double z; };
foo
是该结构类型的标记;然后,我可以在需要类型名称的任何地方使用struct foo
:
struct foo bar;
struct foo *fptr;
我可以将结构定义和对象声明合并为一个:
struct foo { int x; int y; double z; } bar, *fptr;
如果我想为指向struct foo
的指针创建一个typedef名称,请按以下步骤操作:
typedef struct foo { int x; int y; double z} *FooP;
FooP
现在是struct foo *
的同义词:
FooP myptr;
相当于
struct foo { int x; int y; double z; } *myptr;