gpt4 book ai didi

c - iowin32.h 中的 OF 宏

转载 作者:太空狗 更新时间:2023-10-29 16:53:34 25 4
gpt4 key购买 nike

我无法理解 minizip 的 iowin32.h 中的以下行:

void fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));

( Source ,过时但仍然相关)

OF 宏有什么作用?

最佳答案

名称 OF 可能是 Old function declaration 的缩写。

在 80 年代甚至更早的时候,此函数的典型声明如下所示:

fill_win32_filefunc();

就是这样。没有明确的返回类型,没有声明的参数。默认情况下,返回类型为 int,参数无关紧要,因为调用者无论如何都会(希望)传递正确数据类型的值。

后来的版本引入了 void 类型,所以声明可能如下所示:

void fill_win32_filefunc();

而ANSI C89出来的时候,引入了函数参数的声明。现在一个好的声明看起来像这样:

void fill_win32_filefunc(zlib_filefunc_def* pzlib_filefunc_def);

在 1989 年之后的早期,有很多代码需要结合这两种风格。因此发明了一个宏OF(有时是_P 或其他名称)。它的定义通常是:

#if PRE_ANSI_C89
# define OF(args) ()
#else
# define OF(args) args
#endif

由此,可以轻松生成两个版本。

现在,除了非常非常旧的编译器之外,不再需要这种 hack。

关于c - iowin32.h 中的 OF 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com