C++函数定义写在头文件中,需要加extern吗
时间: 2024-03-29 19:40:39 浏览: 136
不建议在头文件中定义函数,因为这样做会造成重复定义的问题。通常情况下,头文件中只包含函数和变量的声明,而不是定义。函数的定义应该放在源文件中,这样可以避免重复定义和链接错误。
如果非要在头文件中定义函数,那么不需要加 `extern`。在头文件中定义函数时,需要使用 `inline` 或者 `static` 关键字来避免重复定义的问题。如果使用 `inline` 关键字,在编译时会将函数的定义插入到函数调用的地方,而不是像普通函数一样在链接时进行定义。如果使用 `static` 关键字,函数的作用域仅限于当前文件,也可以避免重复定义的问题。
相关问题
c++中头文件写extern的作用
在C++中,`extern`关键字用于声明一个变量或者函数是在其他文件中定义的。使用`extern`关键字可以将变量或者函数的声明与其定义分离开来,从而实现模块化的编程。
当在头文件中使用`extern`关键字声明一个变量时,它告诉编译器该变量在其他文件中定义,不在当前文件中定义。这样可以避免在多个源文件中重复定义同一个全局变量,防止重复定义的错误。头文件通常用于存放变量和函数的声明,而定义则放在源文件中。
以下是一个示例:
```cpp
// header.h 头文件
extern int globalVar; // 声明一个全局变量
void foo(); // 声明一个函数
// implementation.cpp 源文件
#include "header.h"
int globalVar = 10; // 定义全局变量
void foo() {
// 函数实现
}
// main.cpp 源文件
#include "header.h"
int main() {
globalVar = 20; // 访问全局变量
foo(); // 调用函数
return 0;
}
```
在上面的示例中,头文件`header.h`中使用`extern`关键字声明了一个全局变量`globalVar`和一个函数`foo()`。然后,在源文件`implementation.cpp`中定义了这些变量和函数。最后,在源文件`main.cpp`中通过包含头文件来使用这些声明的变量和函数。
通过使用`extern`关键字,我们可以将变量和函数的声明与其定义分离,提高代码的可维护性和可重用性。
c++ 在头文件中定义全局变量和全局函数
在头文件中定义全局变量和全局函数的做法是将它们声明为 `extern`,然后在源文件中进行定义。以下是一个示例:
头文件:
```c++
#ifndef EXAMPLE_H
#define EXAMPLE_H
extern int global_var; // 声明全局变量
extern void global_func(); // 声明全局函数
#endif
```
源文件:
```c++
#include "example.h"
int global_var = 0; // 定义全局变量
void global_func() { // 定义全局函数
// ...
}
```
注意,头文件中只能包含声明,不能包含定义,因为头文件会被多个源文件共享,如果在头文件中定义了全局变量或全局函数,会导致重复定义错误。
阅读全文