在C语言中操作全局变量

3

我有很多全局变量,它们的名称非常长,例如:

var1.var2.var3.var4.myGlobalVar1[N] 

我必须在我的函数中使用这些变量。我的问题是,最好的操作变量的方式是什么?是否需要将其复制到本地变量中以增加可读性?

2个回答

4

如果您只想提高可读性,可以使用

#define SHORTER_NAME var1.var2.var3.var4.myGlobalVar1[N]

如果它是一个数组,您可以使用

#define SHORTER_NAME var1.var2.var3.var4.myGlobalVar1

要通过SHORTER_NAME[index]访问每个值。


1
增加可读性的最佳方法确实是创建一个本地变量。这个本地变量将在最终可执行文件中被优化掉,因此不会影响程序的性能。本地变量可以是结构体成员的硬拷贝,也可以是指向它的指针,具体取决于情况方便的方式。
您还可以以各种方式使用宏,但我不建议这样做,因为它们会使全局命名空间变得混乱。
如果出于任何原因您仍然坚持使用宏,那么您应该按照以下方式操作:
#define SHORT var1.var2.var3.var4.myGlobalVar1
...
SHORT[i] = something;

你在这种情况下不应该使用函数式宏。它们不是类型安全的,难以阅读、调试和维护。总的来说,宏是危险且不良的实践。

全局变量是一个数组,所以根据你的回答,我认为最好的方法是创建一个指向它的本地变量。这是正确的吗? - physics
@physics 这很可能是最好的想法,是的。 - Lundin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接