缩短struct*pointer示例的方法,这样我就不会';你不必把它打印出来吗?
我记得我的教授向我们展示了如何替换“struct”语句,例如缩短struct*pointer示例的方法,这样我就不会';你不必把它打印出来吗?,c,struct,C,Struct,我记得我的教授向我们展示了如何替换“struct”语句,例如struct*pointerexample,这样我们就不必每次都键入它。但是,我不记得他们是否使用了预处理器指令,比如#define,或者他们是如何做到的。有什么想法吗?另外,我如何定义示例结构*点示例?这是正确的方法吗 typedef struct pointerexample SPE, * PSPE; 现在您可以使用SPE而不是长名称。最好不要使用PSPE作为指向后者的指针,因为在我看来,这接近于破坏代码 使用预处理器也可以: #
struct*pointerexample
,这样我们就不必每次都键入它。但是,我不记得他们是否使用了预处理器指令,比如#define
,或者他们是如何做到的。有什么想法吗?另外,我如何定义示例结构*点示例?这是正确的方法吗
typedef struct pointerexample SPE, * PSPE;
现在您可以使用SPE
而不是长名称。最好不要使用PSPE作为指向后者的指针,因为在我看来,这接近于破坏代码
使用预处理器也可以:
#define SPE struct pointerexample
然而,在某些情况下,后一种方法可能会导致意外结果。这里不需要使用前置处理器,因为有前一种解决方案
现在您可以使用SPE
而不是长名称。最好不要使用PSPE作为指向后者的指针,因为在我看来,这接近于破坏代码
使用预处理器也可以:
#define SPE struct pointerexample
然而,在某些情况下,后一种方法可能会导致意外结果。这里不需要使用预处理器,因为有前一种解决方案。使用类型定义:
struct pointerexample {};
typedef struct pointerexample *ppe;
有了它,您可以使用ppe
创建指向pointerexample
的指针:
ppe var1, var2;
使用typedef:
struct pointerexample {};
typedef struct pointerexample *ppe;
有了它,您可以使用ppe
创建指向pointerexample
的指针:
ppe var1, var2;
一种常见的方法是首先使用
typedef
来减少声明结构时的键入量。这允许您只使用命名类型,而不必到处使用struct
关键字。例如:
typedef struct myStruct {
int a;
char c;
} myStruct_t;
myStruct_t aStruct; // Declare a struct
aStruct.a = 0; // Set a to zero
myStruct_t* pS = &aStruct; // Pointer to a struct
pS->a=1; // Set a to one
一种常见的方法是首先使用
typedef
来减少声明结构时的键入量。这允许您只使用命名类型,而不必到处使用struct
关键字。例如:
typedef struct myStruct {
int a;
char c;
} myStruct_t;
myStruct_t aStruct; // Declare a struct
aStruct.a = 0; // Set a to zero
myStruct_t* pS = &aStruct; // Pointer to a struct
pS->a=1; // Set a to one
struct*pointerexample
甚至不是有效的C。您可能会想到typedef
。因为它省略了结构的名称。@Caleb哦,对了,结构的名称不是指针,对象的名称是,对吗?struct pe*
或typedef struct pe
然后你可以说pe*
struct*pointerexample
甚至不是有效的C。你可能会想到typedef
。因为它省略了结构的名称。@Caleb哦,对了,结构的名称不是指针,对象的名称是,对吗?struct pe*
或typedef struct pe pe
那么你可以说pe*
@Caleb:虽然typedef
指针类型对我来说真的很难,但我确实调整了我的示例。@Caleb:虽然typedef
指针类型对我来说真的很难,但我确实调整了我的示例。不是保留后缀吗,根据C-标准?@alk-由POSIX保留@阿尔克:说得好,我不知道这是POSIX保留的。我已经更新了答案。谢谢。\u t
是不是一个保留后缀,按照C标准?@alk-它是由POSIX保留的@阿尔克:说得好,我不知道这是POSIX保留的。我已经更新了答案。谢谢。C语法允许在没有名字的情况下使用struct,所以我不明白为什么编码人员给struct起了一个名字,并对它进行了类型定义。我看到很多代码给结构起了一个名字,但从未使用过。如果结构是递归的,我可以看到它的用处,但在本例中,不需要它。此外,我通常用预处理器条件来包装我的结构,以防我必须将其移植到C89或更旧的编译器,而上述方法不起作用。C语法允许使用结构而不使用名称,因此我不明白为什么编码器会给结构命名并对其进行类型定义。我看到很多代码给结构起了一个名字,但从未使用过。如果结构是递归的,我可以看到它的用处,但在本例中,不需要它。此外,我通常用预处理器条件来包装我的,以防我必须将其移植到C89或更旧的编译器,而上述方法不起作用。