我试图想办法防止每次写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定义之外,还有什么方法可以简化编码吗?
答案 0 :(得分:4)
虽然宏确实在简化繁琐,重复的编码任务中占有一席之地,但这并不是他们有用的地方之一:每struct
节省六个字符,不会帮助你隐藏任何复杂性,同时为您的代码的读者引入可读性问题。
如果您希望保存一些输入,在这种情况下更好的方法可能是在您喜欢的IDE或代码编辑器中定义一个宏。
虽然制定决定使用宏的规则非常困难,但一般来说,在做出决定时应考虑以下几点:
答案 1 :(得分:2)
使用宏来“隐藏”事物是不好的做法。对于所有阅读代码的人来说,应该非常清楚每个事物的内容。我的建议是仅将宏用于简单定义,例如......
#define MAX_NUM (10)
...或者在无法定义功能或更复杂的情况下。我想不出一个很好的例子,但也许这很难说明一个罕见的例外......
#define TRY(test) if(test != 0) \
goto fail; \
#define FAIL(fail_block) { \
fail: \
fail_block \
} \