gpt4 book ai didi

c - 我是否应该重新声明外部数组的一部分以在模块中使用

转载 作者:行者123 更新时间:2023-11-30 19:04:01 25 4
gpt4 key购买 nike

假设我有三个具有外部链接的项目范围变量 block vByte[1000]vWord[1000]vQword[1000] 。由于缺乏更好的调试解决方案,我想在运行时看到的每个变量都必须位于这些 block 中。

现在我想在模块(编译单元)中实现一组函数,其中有一些我希望能够监视的重要值。我想出了以下解决方案来更清晰地访问数组的这些部分,但我不确定使用哪个。

首先,我会在模块中声明数组 extern vByte[1000]; ,并且我想为数组的特定变量指定一个合适的名称。

我可以#define我想要使用的变量:#define importantValue1 vByte[21]并像这样使用它们。

但我认为将变量封装在我的模块中可能会更好,也许像这样:

static byte *importantValue1 = &vByte[21]; 

这将强化该变量用于该模块的事实。这有缺点吗?还是定义只是开销较小且没有缺点的直接方法?

最佳答案

一般来说,很难回答 #define 还是指针是更好的方法。

然而,从减少依赖关系和代码复杂度的角度来看,减少全局变量的数量通常会减少函数/单元之间的依赖关系,从而降低整体复杂度。

所以我想说,这并不是#define- 或指针方法哪个更好的问题;而是问题所在。我宁愿争取不访问这些全局数组的函数(无论通过哪种“变量”技术),而是仅使用函数参数/参数。

顺便说一句:请注意,#define-“变量”和指针变量需要以不同的方式使用,因为在第一种情况下,您可以编写importantValue1 = 10,而在第二种情况下,您必须编写*importantValue1 = 10。但我想你已经意识到了这一点。

关于c - 我是否应该重新声明外部数组的一部分以在模块中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53114761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com