最近在看nginx源码发现一些在函数前面定义的空宏,例如: ngx_cdecl

#define ngx_cdecl

int ngx_cdecl
main(int argc, char *const *argv);

void ngx_cdecl
ngx_log_stderr(ngx_err_t err, const char *fmt, ...);

结果一看它有声明,只是一个定义为空的宏.

#define ngx_cdecl

然后查询了相关资料后,觉得应该是多平台之间不同的编译器有不同的编译选项,只是为了以后其它平台有需要添加的或扩展的编译时选项而预留的.

例如在VC环境下进行回调函数的声明时,很多时候都会加上_stdcall、_cdecl、 _fastcall这三个在windows平台下指定函数调用的方式的编译选项.

所以这里可能就只是为了以后的跨平台兼容性问题.