【发布时间】:2015-09-23 04:21:57
【问题描述】:
这个问题来源于this one。
我有一个必须分成多个部分的工作程序。在这个程序中,需要在程序的某些部分中多次使用一个变量(现在它是一个 GTK+ 一个:P),这些变量最终会出现在单独的 .cpp 文件中。
所以,我做了一个简单的例子来了解如何使变量可用于程序部分。先前代码的修改版本将是:
#include <iostream>
using namespace std;
int entero = 10;
void function()
{
cout<<entero<<endl;
//action1...;
}
void separated_function()
{
cout<<entero<<endl;
//action2...;
}
int main( int argc, char *argv[] )
{
function();
separated_function();
cout<<entero<<endl;
//something else with the mentioned variables...;
return 0;
}
需要正确拆分代码,将function()、another_function() 和main() 放在单独的.cpp 文件中,并使entero 可供所有人使用... 但是:
在上一个问题@NeilKirk评论道:Do not use global variables. Put the required state into a struct or class, and pass it to functions as necessary as a parameter(而且我也发现很多网页指向不建议使用全局变量)。
据我所知,在@PaulH. 提供的答案中,他描述了如何通过使变量全局化来使变量可用。
这个答案非常有用,它不仅适用于 char 数组,而且适用于 ints、strings 和 GTK+ 变量(或指向变量的指针:P)。
但是由于不推荐使用这种方法,我会感谢任何能够展示将变量作为函数参数传递的代码的正确方法或比工作全局变量更推荐的其他方法的人。
我研究了参数和类,但是我是新手,我把代码弄乱了,没有好的结果。
【问题讨论】:
-
您知道您可以创建自己的自己的头文件,并将它们包含在多个源文件中吗?头文件可以包含声明和类或结构定义。
-
是的,但是这个文件的目的是将它们编译在一起,并且在所有这些文件中包含相同的变量会在编译时生成多重定义。而且我真的不明白如何制作您所说的内容,我尝试过但失败了。