一、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时应该注意以上几点。