什么情况下需要需要使用 extern 关键字显式地声明为外部函数
时间: 2024-03-04 16:52:55 浏览: 85
在 C++ 中,如果一个函数定义在某个文件中,而在另一个文件中需要使用这个函数,就需要使用 extern 关键字来显式地声明这个函数为外部函数。这是因为,在 C++ 中,函数默认是内部函数,如果没有使用 extern 关键字来声明为外部函数,编译器会认为该函数是内部函数,只能在当前文件中使用,其他文件无法调用该函数。
另外,在 C++ 中,如果一个函数在多个文件中定义了多次,那么在链接时就会出现重复定义的错误。为了避免这种情况的发生,可以在定义函数时使用 inline 关键字,或者在函数声明时使用 extern 关键字来避免重复定义。使用 extern 关键字声明函数时,编译器会认为该函数是在其他文件中定义的,不会在当前文件中生成函数代码,避免了重复定义的问题。
相关问题
extern 关键字
引用中提到了extern关键字在C语言中的使用。extern关键字在变量名时,用于声明全局变量并指示其在外部定义。如果变量没有extern修饰且没有显式的初始化,就会成为变量的定义,因此此时必须加上extern关键字。
而在函数中,extern关键字同样可以用于函数的声明,表示该函数是在外部定义的。在头文件中声明函数时,加与不加extern都是一样的意思,都是声明函数而不是定义函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [extern关键字](https://blog.csdn.net/apple_51801179/article/details/125758014)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [extern 关键字说明](https://blog.csdn.net/lqy971966/article/details/118017369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
c 函数声明前面加extern
extern关键字用于声明一个全局变量或函数在其他文件中定义。它告诉编译器该变量或函数在当前文件中并没有定义,而是在其他文件中定义。
对于函数的声明,extern关键字可选,因为函数声明默认是外部链接的。但是,如果你想显式地声明函数为外部链接,可以在函数声明前面加上extern关键字。
例如:
```c
extern int globalVariable;
extern void someFunction();
int main() {
// 使用全局变量和函数
return 0;
}
```
在上面的示例中,我们使用extern关键字来声明了一个全局变量globalVariable和一个函数someFunction,表示它们在其他文件中定义。然后,在main函数中可以使用这些变量和函数。
阅读全文