【发布时间】:2026-01-11 23:50:01
【问题描述】:
警告:请多多包涵,我是新手,不完全理解这段代码。
所以在这里的代码库https://github.com/huwan/mini-vtysh/blob/master/vtysh/vtysh.c 中,他们不只是创建函数,而是使用“DEFUNSH”作为函数的替代品。 “DEFUNSH”的定义如下:
#define DEFUNSH(daemon, funcname, cmdname, cmdstr, helpstr) \
int funcname (struct cmd_element *, struct vty *, int, char **); \
struct cmd_element cmdname = \
{ \
cmdstr, \
funcname, \
helpstr, \
daemon \
}; \
int funcname \
(struct cmd_element *self, struct vty *vty, int argc, char **argv)
我不太了解它的好处,而且对我来说,它只会使它更难阅读。使用#define的目的是什么?
【问题讨论】:
-
将标签更改为
C,因为您引用的是 C 代码 -
嗯,首先,它为每个 {structure,function} 组合节省大量文本。
-
#define是一个宏指令。懂宏,你就会懂#define。 -
使用
gcc -E查看应用宏后会发生什么 -
是什么让您认为这段代码一开始就有什么好处,或者它是由一个体面的程序员编写的?链接的源文件显示完全没有正确的程序设计。 Github 是一个垃圾场。
标签: c