以下内容来自 libpng 的 pngconf.h:
libpng 版本 1.6.3 - 2013 年 7 月 18 日
版权所有 (c) 1998-2013 Glenn Randers-Pehrson
我的问题是,给出以下宏预处理器:
#ifndef PNG_FUNCTION
#define PNG_FUNCTION(type, name, args, attributes) attributes type name args
#endif
#ifndef PNG_EXPORTA
#define PNG_EXPORTA(ordinal, type, name, args, attributes)\
PNG_FUNCTION(PNG_EXPORT_TYPE(type),(PNGAPI name),PNGARG(args), \
extern attributes)
#endif
#ifndef PNG_EXPORT_TYPE
#define PNG_EXPORT_TYPE(type) PNG_IMPEXP type
#endif
#ifndef PNGAPI
#define PNGAPI PNGCAPI
#endif
#define PNGCAPI __cdecl
#ifndef PNGARG
#define PNGARG(arglist) arglist
#endif
以下是等价的吗?
#ifndef PNG_EXPORTA
#define PNG_EXPORTA(ordinal, type, name, args, attributes)\
PNG_FUNCTION(PNG_EXPORT_TYPE(type),(PNGAPI name),PNGARG(args), \
extern attributes)
#endif
相当于:
#ifndef PNG_EXPORTA
#define PNG_EXPORTA(ordinal, type, name, args, attributes)\
extern attributes PNG_EXPORT_TYPE(type) (PNGCAPI name) PNGARG(args)
#endif
这最终相当于:
#ifndef PNG_EXPORTA
#define PNG_EXPORTA(ordinal, type, name, args, attributes)\
extern attributes PNG_IMPEXP type __cdecl name arglist
#endif