可以把变量定义写在h文件中吗?
时间: 2024-05-05 19:22:10 浏览: 15
可以,但是不建议在头文件中定义全局变量。因为头文件中的内容会被多个源文件包含,如果在头文件中定义了全局变量,那么在每个源文件中都会有一个全局变量,这容易引起命名冲突和重复定义错误。
一般情况下,头文件中只定义常量、宏、类型定义和函数声明等信息,而将变量的定义放在源文件中。如果确实需要在头文件中定义变量,可以使用`extern`关键字声明一个全局变量,在源文件中进行定义,这样可以避免重复定义的错误。例如:
```c++
// header.h
extern int global_var;
// source.cpp
int global_var = 0;
```
相关问题
在QT creator 中,可以在.h文件中定义pixmap的尺寸大小吗?
可以在.h文件中定义pixmap的尺寸大小。您可以使用QPixmap类的构造函数之一来创建一个指定大小的pixmap,如下所示:
```
QPixmap pixmap(int width, int height);
```
在您的头文件中,您可以定义一个QPixmap对象并在构造函数中指定宽度和高度:
```
class MyClass : public QWidget
{
Q_OBJECT
public:
MyClass(QWidget *parent = 0);
~MyClass();
private:
QPixmap myPixmap;
};
MyClass::MyClass(QWidget *parent)
: QWidget(parent)
, myPixmap(100, 100) // width = 100, height = 100
{
// ...
}
MyClass::~MyClass()
{
// ...
}
```
这将创建一个宽度为100像素,高度为100像素的pixmap对象,并将其存储在myPixmap变量中。
C语言 在.h中定义变量
在C语言中,通常不建议在头文件(.h文件)中定义变量,而是在源文件(.c文件)中定义变量,并在头文件中使用extern关键字进行声明。这是因为在多个源文件中包含同一个头文件时,如果在头文件中定义变量,会导致重复定义的问题。
以下是一个示例:
在.h文件中声明变量:
```c
extern int globalVariable; // 在头文件中声明全局变量
```
在.c文件中定义变量:
```c
int globalVariable = 10; // 在源文件中定义全局变量并赋初值
```
这样,在其他源文件中包含该头文件时,可以使用extern关键字来引用该全局变量,而不会导致重复定义的问题。
请注意,这只是一种通用的做法,不同的编译器可能会有不同的行为。因此,建议遵循这种做法以确保代码的可移植性和正确性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)