您的位置:

深入了解extern void

一、extern void的作用

extern void demoFunction();

从代码片段中可看出,extern void用于声明一个函数demoFunction(),它没有参数,也没有返回值。具体实现可在本文件中或其他文件中找到。extern表示该函数会在其他文件中定义,而不是在该声明文件中定义。void表示该函数没有返回值,即不返回任何值。

extern void通常与头文件一起使用,使得在不同文件中调用函数成为了可能。这是因为在C或C++中,每个源文件都必须存为独立的编译单元。这意味着如果要在不同的源文件中调用同一个函数,我们需要在每个文件中声明它。我们可以将这个声明放在一个头文件中,而在需要使用函数的文件中包含这个头文件。

例如,在test.c中定义函数check(),在main.c中需要调用它,则应该在test.h头文件中声明check()函数:

/* test.h */
#ifndef _TEST_H_
#define _TEST_H_

extern void check();

#endif /* _TEST_H_ */

二、extern void的用法

使用extern void声明函数时,我们不需要在声明中给出函数实现的具体细节。这部分应该留给其他文件中的定义操作来完成。因此,我们通常使用extern在头文件中声明函数。

下面是一个使用extern void的代码示例:

/* test.h */
#ifndef _TEST_H_
#define _TEST_H_

extern void check(int num);

#endif /* _TEST_H_ */

/* test.c */
#include "test.h"
void check(int num) {
    printf("num is %d\n", num);
}

/* main.c */
#include "test.h"
int main() {
    check(3);
    return 0;
}

在以上示例中,我们定义了一个名为check()的函数,在test.h头文件中使用extern void声明。我们在test.c中实现check()函数的具体操作。在main.c中使用了check()函数。

三、extern void的注意事项

虽然extern void声明了函数,但它并没有定义该函数。定义函数应该在另一个文件中进行,或在当前文件中提供函数实现。在任何情况下,函数的所有声明必须保持一致。

另外,在使用extern void声明函数时,必须确保作为参数传递给函数的类型与函数实现中的参数类型匹配。否则,可能会导致程序在编译时或运行时崩溃。

最后,需要注意的是,extern void对于定义变量的作用域也有影响。当我们在一个函数中定义了一个全局变量时,其他函数可以通过extern关键字来访问这个变量。

四、小结

在C或C++中,使用extern void是通过声明函数,使得其他文件可以使用该函数。函数的具体实现应该留给定义操作来完成。在使用extern void声明函数时,必须注意函数参数类型与函数实现的一致性,并且全局变量的作用域也会受到影响。在使用extern void时应该注意以上几点。