我不清楚以下代码
struct nsproxy init_nsproxy = INIT_NSPROXY(init_nsproxy);
这可以在这里看到 http://lxr.free-electrons.com/source/kernel/nsproxy.c?v=2.6.28#L27
我无法理解在这里使用宏INIT_NSPROXY http://lxr.free-electrons.com/source/include/linux/init_task.h?v=2.6.28#L53
宏被定义为使用INIT_NSPROXY(nsproxy),但是当上面的代码片段正在初始化时,它正在使用INIT_NSPROXY(init_nsproxy),那怎么可能呢?
答案 0 :(得分:1)
#define INIT_NSPROXY(nsproxy) // etc.
在此宏定义中,nsproxy
是宏参数的名称。
在宏替换列表(#define INIT_NSPROXY(nsproxy)
部分之后的所有内容中),nsproxy
标记出现的任何地方,它都会被传递的参数替换。
在这种情况下,正在传递参数init_nsproxy
。
答案 1 :(得分:0)
在这种形式中,您可以将宏视为函数调用。 函数的名称是INIT_NSPROXY,参数的名称是nsproxy。 在INIT_NSPROXY宏内部,nsproxy被传递给它的任何标识符替换。