extern int foo
时间: 2024-01-05 12:03:27 浏览: 32
extern int foo是一个函数声明,它告诉编译器在其他文件中有一个名为foo的函数,返回类型为int。这个声明通常放在头文件中,然后在其他文件中包含这个头文件,以便在其他文件中使用foo函数。使用extern关键字可以使得函数声明更加简洁明了,同时也可以加快程序的编译速度。
举个例子,如果我们在a.c文件中定义了一个函数foo,然后在b.c文件中想要使用这个函数,我们可以在b.c文件中使用extern int foo来声明这个函数,然后就可以在b.c文件中使用foo函数了。
```c
// a.c文件中定义foo函数
int foo(int x) {
return x + 1;
}
// b.c文件中使用foo函数
extern int foo(int x);
int main() {
int result = foo(3);
return 0;
}
```
相关问题
C语言 extern举例
假设我们有两个C语言源文件,分别为"main.c"和"func.c",其中"main.c"想要使用"func.c"中定义的函数foo(),可以通过"extern"关键字来实现:
// func.c
int foo() {
return 42;
}
// main.c
extern int foo(); // 声明foo()函数的外部链接属性
int main() {
int result = foo(); // 调用foo()函数
return 0;
}
在"main.c"中,我们使用"extern"关键字声明了"foo()"函数的外部链接属性,这样编译器就知道在链接阶段需要将"foo()"函数的定义从"func.c"中连接到"main.c"中。然后,在"main()"函数中,我们就可以调用"foo()"函数,而不用担心链接错误的问题。
extern关键字的作用
extern是一个关键字,用于声明一个变量或函数是在别的文件或模块中定义的。它的主要作用是告诉编译器该变量或函数并不是在当前文件或模块中定义的,需要在别处进行定义并链接。这就允许在一个程序的多个文件中共享变量或函数,从而方便模块化编程和代码重用。
在C语言中,如果一个变量或函数被定义在其他文件中,那么在使用它之前需要用extern关键字进行声明。例如:
```c
extern int count; //声明一个整型变量count,它在别的文件中定义
extern void foo(); //声明一个函数foo,它在别的文件中定义
```
需要注意的是,extern关键字只是用于声明,不能用于定义。也就是说,不能在extern声明中初始化变量或函数。例如:
```c
extern int count = 0; //错误,不能在extern声明中初始化变量
extern void foo() { //错误,不能在extern声明中定义函数
//函数体...
}
```
在C++中,extern关键字也可以用于声明变量或函数,但它还有其他用途,比如用于指定一个全局变量或函数的链接属性。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)