【发布时间】:2013-12-31 01:05:36
【问题描述】:
我试图想办法防止每次都写typedef struct 然后我发现我可以通过这种方式使用宏定义来做到这一点:
#include <stdio.h>
#include <stdlib.h>
#define struct_t typedef struct
struct_t list {
int id;
struct list *next;
} list;
int main(void)
{
list *element = (list *)malloc(sizeof(list));
element->id = 7;
element->next = NULL;
printf("ID: %d\nNEXT: %p", element->id, element->next);
return 0;
}
结构只是一个例子:整个想法都是关于简化编码。
使用宏来简化编码是一种好习惯吗?或者它可能会导致一些问题?
除了使用 maroc 定义之外,还有什么方法可以简化编码?
【问题讨论】:
-
请不要这样做。 使用宏来替换语言的任意部分是邪恶的。选择的名称更糟糕:它看起来好像它本身就是一个类型名称。
-
@FiddlingBits 抱歉,这与简化编码无关。检查新标题
-
@rullof 哦,我现在明白了。
-
(最好的事情是我知道我将在前 10 分钟内获得超过 5 个赞。)
-
根本没有必要对结构使用 typedef。您可以只写
struct list { /* ... /* };,然后将类型称为struct list。