gpt4 book ai didi

c - C 头文件中声明了两次的函数

转载 作者:行者123 更新时间:2023-12-03 03:39:14 26 4
gpt4 key购买 nike

我知道 C 头文件的 #ifdef 声明以及变量和函数之前 extern 的含义。但最近我有一个用于嵌入式设备的第三方库,其方案如下:

/* "lib.h" */
#ifndef LIB_H_
#define LIB_H_

#ifdef LIB_C

void function1();
/* ... */

#else

extern void function1();
/* ... */

#endif

#endif /* LIB_H_ */

另外我还有一个相应的 C 源文件:

/* lib.c */
#define LIB_C
#include "lib.h"

void function1()
{
/* ... */
}

/* ... */

所以我在这里有点困惑。为什么要以这种方式在 header 中声明所有函数两次?

最佳答案

这要么是一种矫揉造作,要么是对某些不合格或古老的编译器的兼容性黑客。您不需要 extern 版本,但使用它也可以,因为默认情况下函数声明是 extern。

换句话说,它很粗糙,但也许有人需要这种粗糙的东西。我们无法确定。

关于c - C 头文件中声明了两次的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40508391/

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