gpt4 book ai didi

c - 如何在C头文件中定义函数

转载 作者:行者123 更新时间:2023-11-30 18:30:21 24 4
gpt4 key购买 nike

我在头文件中找到了这个,但我不确定它的作用。为什么会有define后面跟着 2 个函数?

#ifndef BCM2835_NO_DELAY_COMPATIBILITY
#define delay(x) bcm2835_delay(x)
#define delayMicroseconds(x) bcm2835_delayMicroseconds(x)
#endif

稍后在文件中我再次看到这两个函数为:

extern void bcm2835_delay (unsigned int millis);
extern void bcm2835_delayMicroseconds (uint64_t micros);

最佳答案

#define之后的语句实际上不是函数,而是预处理器宏。

宏的目的是在编译过程之前替换源代码中的文本。意思是,程序员在任何地方输入 delay(x)在包含此 header 的文件中,它将被替换为 bcm2835_delay(x) 。与 delayMicroseconds(x) 类似和bcm2835_delayMicroseconds(x) (当然,只有 BCM2835_NO_DELAY_COMPATIBILITY 尚未定义)。

您所说的后面的声明是实际的函数声明——实际上是针对宏正在调用的函数。

在一些不相关的注释中,重要的是区分正在定义的函数和正在声明的函数(两者都与 #define 无关,因为它定义了宏 - 而不是函数!)

.h 文件中的函数已声明。事实上,extern关键字指定它们将在此文件范围之外定义。

另一方面,函数定义将包含大括号 {...}具有内部定义的行为。

我希望这有帮助。

关于c - 如何在C头文件中定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31576190/

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