C 如何设计一个易于导入的全局浮点数组
在我的程序中,我试图定义一个浮点数组,这些浮点数组在程序中是全局可访问的。这些只是为了开发目的,所以我试图用最少的代码更改来实现这个数组 我确实意识到这是非常糟糕的编程实践和风格,但我在一个开发人员项目上,并且这段代码在代码库的一个单独分支上只会存在一两天 这个数组需要从一个非常大的代码库的两个部分访问,我没有很多方法可以让这两个部分在没有很多问题的情况下相互通信 我正在考虑两种设计: globalTweakingArray.h v1 v2 现在,我的困惑来自于如何使用这些,它们的地址空间等等。目标是在A + C++源文件中,它们可以<代码> >导入“GualAltWimeAdtual.Read”。 我对全局变量的含义有点困惑,因此我不确定C 如何设计一个易于导入的全局浮点数组,c,C,在我的程序中,我试图定义一个浮点数组,这些浮点数组在程序中是全局可访问的。这些只是为了开发目的,所以我试图用最少的代码更改来实现这个数组 我确实意识到这是非常糟糕的编程实践和风格,但我在一个开发人员项目上,并且这段代码在代码库的一个单独分支上只会存在一两天 这个数组需要从一个非常大的代码库的两个部分访问,我没有很多方法可以让这两个部分在没有很多问题的情况下相互通信 我正在考虑两种设计: globalTweakingArray.h v1 v2 现在,我的困惑来自于如何使用这些,它们的地址空间等等。
v1
和v2
的设计会带来什么危险。此外,我甚至不知道如何在v2
中为数组分配一些空间
这两种设计都是定义全局数组的正确方法吗?随之而来的危险是什么?它们是定义全局调整数组的正确方法吗
旁注:我将从objective-c源代码访问此阵列。这不重要,对吧?浮点数是浮点数,指针是指针,对吗?在研究了潜在的解决方案后,这里是我最终选择的解决方案。头文件中的变量也导致了一些编译器问题,所以我现在设置了以下内容 标题
#define TWEAKING_ELEMENTS 10
float getTweaking(int i);
void setTweaking(int i, float val);
实施
float tweakingArray[TWEAKING_ELEMENTS];
float getTweaking(int i) {
return tweakingArray[i];
}
void setTweaking(int i, float val) {
tweakingArray[i] = val;
}
记住,如果你有Objto-C代码引用这个C++代码,Objto-C代码需要实际为Objul-C++,这意味着文件必须以.m.结尾命名。这可能会带来额外的复杂性。
第一个问题:为什么是全局变量?这些都是有问题的,通常是糟糕的设计,所以最好避免它们。将其包装在一个提供对底层数据访问的函数中,可以为您提供一个薄而重要的抽象层,并且可以对代码的其他部分隐藏这样的实现细节。类似于float getTweaking(size\u t index)
的东西非常容易实现,并且通过优化编译得很好。这可以延迟初始化数组,从文件加载数据,或者其他什么,这完全取决于您。我当然喜欢这个想法。因此,如果我要实现v1,然后实现一个getter和setter函数,那么导入该头的所有代码都将看到并设置相同的值?这让您可以在不改变接口的情况下改变想法。那么v1和v2之间的区别纯粹是一个实现细节,而不是一个具有深远影响的决定。您是否曾经问过为什么要声明某些变量或函数?正如你提到的目标C,我再次在谷歌上搜索(因为我没有经验)并发现
#define TWEAKING_ELEMENTS 10
float getTweaking(int i);
void setTweaking(int i, float val);
float tweakingArray[TWEAKING_ELEMENTS];
float getTweaking(int i) {
return tweakingArray[i];
}
void setTweaking(int i, float val) {
tweakingArray[i] = val;
}