我记得我的教授向我们展示了如何替换struct *pointerexample
之类的“struct”语句,这样我们就不必每次都输入它。但是,我不记得他们是否使用了#define
之类的预处理器指令或者他们是如何做到的。有任何想法吗?另外,我该怎么做#define EXAMPLE struct *pointerexample
?这是正确的方法吗?
答案 0 :(得分:2)
typedef struct pointerexample SPE, * PSPE;
现在您可以使用SPE
代替长名称。最好不要使用PSPE
作为后者的指针,因为在我看来这很接近于阻碍代码。
使用预处理器也可以:
#define SPE struct pointerexample
然而,后一种方法可能会在某些条件下导致意外结果。这里没有必要使用预处理器,因为有前一种解决方案。
答案 1 :(得分:2)
使用typedef:
struct pointerexample {};
typedef struct pointerexample *ppe;
有了这个,您可以使用ppe
创建指向pointerexample
的指针:
ppe var1, var2;
答案 2 :(得分:2)
一种常见的方法是在声明结构时首先使用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