缩短struct * pointerexample的方法,以便我不必输入它?

时间:2014-02-17 17:30:54

标签: c struct

我记得我的教授向我们展示了如何替换struct *pointerexample之类的“struct”语句,这样我们就不必每次都输入它。但是,我不记得他们是否使用了#define之类的预处理器指令或者他们是如何做到的。有任何想法吗?另外,我该怎么做#define EXAMPLE struct *pointerexample?这是正确的方法吗?

3 个答案:

答案 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