/*********************************************************************
 * Author  : Samson
 * Date    : 05/03/2012
 * Test platform:
 *               GNU Linux version 2.6.29.4
 *               gcc version 4.4.0 20090506 (Red Hat 4.4.0-4) (GCC)

 * *******************************************************************/

最近在看nginx源代码的时候,在很多函数定义的地方都带有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平台下指定函数调用的方式的编译选项。


所以,这种定义为空的宏的作用是预留下以后平台移植时的其它选项的定义。应该仅仅是为了移植的方便。


GitHub 加速计划 / li / linux-dash
10
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:29 天前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐