在定义 C 中为空?

Empty in define C?

关于以下片段的快速问题:

#ifndef __LZO_MMODEL
#define __LZO_MMODEL            /*empty*/
#endif

在这样一个空定义中它代表什么?

用法类似:

#define lzo_bytep               unsigned char __LZO_MMODEL *
#define lzo_charp               char __LZO_MMODEL *

这些答案并未涵盖许多其他可能的情况。

再举个例子。

#ifndef DEBUG
#define SINLINE static inline __attribute__((always_inline))
#else
#define SINLINE 
#endif

然后

SINLINE void myfunc()
{
   /* ... */
}

并且如果 DEBUG 已定义函数将不会被内联,从而使其对调试器更友好。

还有许多其他用例。