基本上我需要的是两个或多个函数,这些函数驻留在不同的源文件中,并且无法相互了解以共享某些数据。 Globals将是一个即时的解决方案,但他们普遍不满意。难道他们在这种情况下几乎是不可避免的吗?
以下是使用全局变量我需要做的简化说明:
file1.c中
int foo;
void change_foo()
{
// Does some calculation to determine the new value of foo
foo = ...
}
file2.c中
extern int foo;
void use_foo()
{
// Does something with the value of foo
// Is not aware of change_foo()'s existence so it can't call or be called from it
}
1)如何在这里消除对全局变量的需求?在任一函数中使int foo
静态将立即耦合这两个函数。在main()中定义变量然后从main()中调用这两个函数对我来说不是一个选项。
2)在C ++这样的OO语言中是否有更优雅的解决方案?假设两个不同名称空间中的两个方法需要共享数据。
3)我经常可以看到这个问题。一个值得注意的例子是需要在两个独立的android活动之间共享资源或某些其他实体(无法以有意义的方式进行序列化)。有没有办法使用全局变量(本例中带有公共静态字段的类)或单例设计模式?
答案 0 :(得分:1)
在C ++中,变量可以放在单例类中,还有getter和putter访问方法。然后每个文件引用单例类。
在C中,数据可以是文件静态的'到第三个文件,其中该文件包含获取/放置变量的函数。 (这就是我要做的)然后每个想要访问变量的函数都可以调用第三个文件中的相应函数。