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

how to define functions in C header files

我在头文件中找到了它,但我不确定它的作用。 为什么有一个 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);

这是首先检查是否有定义的值。这个值 BCM2835_NO_DELAY_COMPATIBILITY 似乎可以打开和关闭与一组特定计时器的兼容性。如果它没有被定义(换句话说,如果它没有被关闭)那么两个 被定义为指向一个实际的函数。

稍后定义那些实际的函数。

还有其他问题吗??

#define后面的语句实际上不是函数,而是pre-processor宏。

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

你所说的后面的声明是实际的函数声明——实际上是宏调用的函数。

有点 un-related 注意,区分定义的函数和声明的函数很重要(两者都与 #define 无关,因为它定义了一个宏- - 不是函数!)

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

另一方面,函数定义将包含大括号 {...},其中定义了行为。

希望对您有所帮助。