QT中extern什么意思
时间: 2023-09-15 08:22:39 浏览: 166
在Qt中,`extern`关键字用于声明外部变量或函数。它告诉编译器该变量或函数是在其他地方定义的,而不是在当前文件中定义。
当你在一个源文件中使用`extern`来声明一个变量时,它表示这个变量是在其他文件中定义的,并且你可以在当前文件中使用它,而不需要重新定义它。
例如,在一个源文件中使用`extern`声明一个全局变量,然后在另一个源文件中定义该变量。这样,两个源文件就可以共享同一个全局变量。
在你提供的例子中,`extern MainWindow* gmainwindow;`声明了一个名为`gmainwindow`的外部全局变量,表示它是在其他地方定义的。这个变量的类型是指向MainWindow类的指针。
相关问题
qt 使用extern
在 C++ 中,`extern` 关键字用于声明一个变量或函数是在其他文件中定义的。在 Qt 中,`extern` 通常用于在不同的源文件中共享对象或函数。
例如,如果你在一个源文件中定义了一个全局变量,而另一个源文件需要访问该变量,则可以在后者中使用 `extern` 关键字来声明该变量:
```cpp
// file1.cpp
int globalVar = 42;
```
```cpp
// file2.cpp
extern int globalVar;
```
这告诉编译器,`globalVar` 变量在其他文件中定义,因此编译器应该在连接时查找这个变量的定义。
同样,当你在一个源文件中定义了一个函数,但想在另一个源文件中使用该函数时,也可以使用 `extern` 来声明该函数:
```cpp
// file1.cpp
void myFunction() {
// ...
}
```
```cpp
// file2.cpp
extern void myFunction();
```
这告诉编译器,`myFunction` 函数在其他文件中定义,因此编译器应该在连接时查找该函数的定义。
在 Qt 中,`extern` 通常用于在不同的源文件中共享全局变量或函数。例如,在一个 Qt 应用程序中,你可能会在一个源文件中定义了一个全局变量,而在另一个源文件中定义了一个函数,该函数需要访问该全局变量。在这种情况下,你可以在函数所在的源文件中使用 `extern` 来声明全局变量,以便在连接时查找该全局变量的定义。
```cpp
// file1.cpp
int globalVar = 42;
```
```cpp
// file2.cpp
extern int globalVar;
void myFunction() {
// 使用 globalVar 变量
}
```
在qt中使用extern
在Qt中使用`extern`关键字与在C++中使用是相同的。`extern`关键字用于声明一个全局变量或函数,它告诉编译器该变量或函数是在其他地方定义的。
在Qt中,你可以使用`extern`关键字来声明一个在其他文件中定义的全局变量或函数,并在当前文件中使用它。下面是一个示例:
假设你有两个文件:main.cpp 和 other.cpp,你希望在 main.cpp 中使用 other.cpp 中定义的全局变量 `myGlobalVar`。首先,在 main.cpp 中使用 `extern` 声明该变量:
```cpp
// main.cpp
extern int myGlobalVar;
int main()
{
// 使用 myGlobalVar
return 0;
}
```
然后,在 other.cpp 中定义该全局变量:
```cpp
// other.cpp
int myGlobalVar = 42;
```
这样,你就可以在 main.cpp 中使用 `myGlobalVar`,而不需要重新定义它。
对于函数的声明和定义,也可以使用 `extern` 关键字。例如,如果你希望在 main.cpp 中调用 other.cpp 中定义的函数 `myFunction()`,你可以这样做:
```cpp
// main.cpp
extern void myFunction();
int main()
{
// 调用 myFunction
myFunction();
return 0;
}
```
```cpp
// other.cpp
#include <iostream>
void myFunction()
{
std::cout << "Hello from myFunction!" << std::endl;
}
```
这样,你就可以在 main.cpp 中调用 `myFunction()`,而不需要重新定义它。
请注意,使用 `extern` 关键字时,你需要确保在使用之前已经在其他地方定义了相应的变量或函数。否则,编译器将会报错。
阅读全文