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

发布于 2024-10-31 15:04:18 字数 292 浏览 0 评论 0原文

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

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

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

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

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

I'm implementing a simple shell and I want to be able to set environment variables through the shell. Using a simple syntax such as set var = hello

I have a struct like this to represent one env variable:

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

I'm thinking of creating a dynamic array of the above struct to hold all environment variables. The problem is I'm not sure how to implement this properly.

Right now, I'm not sure if I should make the array static inside a function or a global variable. Which one would be better? and why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巷雨优美回忆 2024-11-07 15:04:18

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

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

It entirely depends on where the variables need to be accessed from. If they're only needed in a single function, then a static local variable makes the most sense. If they're needed "file-wide" then a file global (that is still static) makes the most sense. Otherwise, a global.

The other option, better for future expansion, would be to create a file-static variable set with accessor functions to get and set name/value combinations, and use that API everywhere else. That lets you change the storage mechanism later to something more efficient if, say, you suddenly needed to store lots of name/values pairs (say, into a b-tree instead of an array).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文