1、通过宏的定义实现跨平台支持
int ngx_cdecl main(int argc, *const *argv)
https://blog.csdn.net/midion9/article/details/50605337
2、C位域
3、编译器的预定义宏
在阅读代码ngx_config.h中, 遇到 typedef uintptr_t ngx_uint_t; 类型定义,了解到编译器预定义宏的概念。编译器预定义宏是为了跨平台移植。
ngx_config.h
typedef uintptr_t ngx_uint_t;
_stdint.h
#ifndef _UINTPTR_T_DECLARED
typedef __uintptr_t uintptr_t;
#define _UINTPTR_T_DECLARED
#endif
_default_types.h
#ifdef __UINTPTR_TYPE__
typedef __UINTPTR_TYPE__ __uintptr_t;
#else
其中__UINTPTR_TYPE__找不到定义处。
经搜索发现是个宏定义,是由编译器预定义的宏。可以通过以下方式查看gcc编译器预定义的宏
gcc -dM -E - < /dev/null