如何在C ++中的单独文件中定义全局变量?

时间:2013-04-19 05:12:15

标签: c++ global-variables header-files

我正在写一个学校项目。在我的项目中,有几个函数可以处理20-30个变量。有没有办法可以在一个单独的文件中声明和初始化这些全局变量,这样我的主要代码仍然简洁明了?

3 个答案:

答案 0 :(得分:6)

您可以将它们创建为单独的全局变量,在头文件中使用extern声明它们,并在一个C文件中定义它们。

您还可以在struct中收集相关变量,并以相同的方式处理它们。

然而,最好是减少对全局变量的需求。如果变量是相关的,你可以只传递struct s?它们用于什么?

答案 1 :(得分:3)

将这些变量包装在一个结构中,并将此结构传递给这些函数。保持全局变量通常不是一个好主意。

进一步阅读:http://c2.com/cgi/wiki?GlobalVariablesAreBad

答案 2 :(得分:2)

通常,您不必使用全局变量。

// Data.h
#ifndef AMIN_PROJECT0_DATA_H_INCLUDED
#define AMIN_PROJECT0_DATA_H_INCLUDED

#include <string>

struct Data {
    int age;
    std::string surname;
    std::string firstname;
};

#endif // AMIN_PROJECT0_DATA_H_INCLUDED

现在,您可以在源文件中包含该标头,然后他们就可以使用Data。因此,您可以声明以Data作为参数的函数:

void checkName(Data const& d) {
    if (d.surname.empty()) { std::cerr << "What, no surname!\n"; }
    if (d.firstname.empty()) { std::cerr << "What, no first name!\n"; }
}