【发布时间】:2012-10-24 05:13:14
【问题描述】:
我正在用 C 语言构建一个 minishell,并且遇到了一个障碍,似乎可以通过使用全局变量(准确地说是 3)轻松修复它。我认为全局变量是必要的原因是,替代方法是将这些变量传递给我程序中的几乎每个函数。
变量是 mainargc、mainargv 和 shiftMArgV。前两个分别是参数的数量和传递给 main 的参数列表。变量shiftedMArgV 是参数列表,但它可能已被移位。我正在尝试创建内置函数 shift 和 unshift,并使 shiftMArgV 指向不同的参数。
那么,让这些全球化是愚蠢的吗?否则我将不得不修改大量代码,而且我不确定将它们设为全局是否会丢失任何东西。
如果我确实将它们设为全局,那么从主头文件中这样做会很愚蠢吗?
感谢大家的帮助,如果您需要任何澄清,请尽管询问。
【问题讨论】:
-
“C 适当使用全局变量” - 我会说不存在。
-
@H2CO3:举例反驳——
stdout、stdin、stderr。 -
@JonathanLeffler 好吧,我也想讨论一下。 (我从不喜欢使用这些全局变量。当我使用它们时,我真的觉得程序的完整性丢失了。)
-
Optimus,出于兴趣,为什么这些值被如此广泛地使用?
-
@JonathanLeffler:
stdout、stdin和stderr不是全局变量。它们甚至不是左值。它们是扩展为FILE *类型表达式的宏。
标签: c shell arguments global-variables main