这个宏在函数声明中的作用是什么?

时间:2017-01-03 15:57:20

标签: c function-declaration

我已下载了一些库,它按以下方式声明了这些功能:

#if !defined(__ANSI_PROTO)
#if defined(_WIN32) || defined(__STDC__) || defined(__cplusplus)
#  define __ANSI_PROTO(x)       x
#else
#  define __ANSI_PROTO(x)       ()
#endif
#endif

int httpdAddVariable __ANSI_PROTO((httpd*,char*, char*));

__ANSI_PROTO在这里扮演什么角色?为什么首选声明为

int httpdAddVariable (httpd*,char*, char*);

1 个答案:

答案 0 :(得分:7)

预ANSI-C不支持此:

int httpdAddVariable (httpd*,char*, char*);

它只支持这个:

int httpdAddVariable (); /* = arguments unspecified*/

这就是宏的作用。如果它检测到原型支持,它会将参数类型粘贴到声明中;否则,它只是粘贴()