这样定义“#define __arch_swab32 __arch_swab32”是什么意思?

在/usr/include/asm/swab.h中我find了下面的代码:

static __inline__ __u32 __arch_swab32(__u32 val) { __asm__("bswapl %0" : "=r" (val) : "0" (val)); return val; } #define __arch_swab32 __arch_swab32 

最后一行的意思是什么,定义一个名字本身?

这就是所谓的自我多元宏观

自我引用的一个常见,有用的用法是创建一个扩展到自身的宏。 如果你写

  #define EPERM EPERM 

然后宏EPERM扩展到EPERM 。 实际上,只要预处理器在运行文本中使用,它就会被单独处理。 你可以通过#ifdef来判断它是一个宏。 如果你想用enum定义数字常量,你可以这样做,但是每个常量的#ifdef都是true。