在/usr/include/asm/swab.h中我找到了以下代码:
static __inline__ __u32 __arch_swab32(__u32 val)
{
__asm__("bswapl %0" : "=r" (val) : "0" (val));
return val;
}
#define __arch_swab32 __arch_swab32
最后一行的含义是什么,将名称定义为自身?
答案 0 :(得分:8)
自引用的一个常见且有用的用途是创建一个扩展到自身的宏。如果你写
#define EPERM EPERM
然后宏
EPERM
扩展为EPERM
。实际上,只要它在运行文本中使用,它就会被预处理器单独留下。您可以告诉它它是#ifdef
的宏。如果要使用enum
定义数字常量,但每个常量的#ifdef
为真,则可以执行此操作。