1

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

4

3 回答 3

6

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

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

然而,最好的办法是减少对全局变量的需求。如果变量是相关的,你可以传递structs 吗?它们是用来做什么的?

于 2013-04-19T05:17:13.477 回答
3

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

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

于 2013-04-19T05:16:36.247 回答
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"; }
}
于 2013-04-19T06:35:47.847 回答