查看英文原文

宏定义要求在指令 #define 之后有一个空格符,而在定义主体部分之前至少有 2 个空格符。例如:

#define F(x, y, z)  ((z) ^ ((x) & ((y) ^ (z))))

有时会在定义主体部分之前使用更多空格,目的是为了将多个密切相关的宏定义垂直对齐,如:

#define NGX_RESOLVE_A         1
#define NGX_RESOLVE_CNAME     5
#define NGX_RESOLVE_PTR       12
#define NGX_RESOLVE_MX        15
#define NGX_RESOLVE_TXT       16
#define NGX_RESOLVE_AAAA      28
#define NGX_RESOLVE_SRV       33
#define NGX_RESOLVE_DNAME     39
#define NGX_RESOLVE_FORMERR   1
#define NGX_RESOLVE_SERVFAIL  2

对于跨越多行的宏定义,应该把连续字符 \ 纵向对齐成一条直线,如:

#define ngx_conf_init_value(conf, default)                                   \
    if (conf == NGX_CONF_UNSET) {                                            \
        conf = default;                                                      \
    }

我们推荐将 \ 放在第 78 个字符的位置,尽管 NGINX 核心有时没这么做。