这个宏在函数声明中的作用是什么?
What is the role of this macro in 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*);
ANSI C 之前的版本不支持这个:
int httpdAddVariable (httpd*,char*, char*);
只支持这个:
int httpdAddVariable (); /* = arguments unspecified*/
这就是宏的作用。如果检测到原型支持,它会将参数类型粘贴到声明中;否则,它只是粘贴 ()
.
我下载了一些库,它声明函数的方式如下:
#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*);
ANSI C 之前的版本不支持这个:
int httpdAddVariable (httpd*,char*, char*);
只支持这个:
int httpdAddVariable (); /* = arguments unspecified*/
这就是宏的作用。如果检测到原型支持,它会将参数类型粘贴到声明中;否则,它只是粘贴 ()
.