shell环境变量的全局与局部静态变量

时间:2011-04-11 02:55:05

标签: c environment-variables

我正在实现一个简单的shell,我希望能够通过shell设置环境变量。使用简单的语法,例如set var = hello

我有一个像这样的结构来表示一个env变量:

typedef struct {
    char *name;
    char *value;
}

我正在考虑创建上述结构的动态数组来保存所有环境变量。问题是我不确定如何正确实现这一点。

现在,我不确定是否应该在函数或全局变量中使数组静态。哪一个会更好?为什么?

1 个答案:

答案 0 :(得分:1)

这完全取决于需要从哪里访问变量。如果它们仅在单个函数中需要,则静态局部变量最有意义。如果他们需要“文件范围”,那么全局文件(仍然是静态的)最有意义。否则,全球化。

另一个更好用于将来扩展的选项是创建一个带有访问器函数的文件静态变量集来获取和设置名称/值组合,并在其他地方使用该API。这使得您可以稍后将存储机制更改为更高效的内容,例如,您突然需要存储大量名称/值对(例如,存储到b树而不是数组中)。