在我的程序内部,我试图定义一个在程序内可以全局访问的浮点数组。这些只是出于开发目的,因此我正在尝试使用最少的代码更改来实现此数组。
我确实意识到这是非常糟糕的编程习惯和风格,但是我在一个开发人员项目中,并且该代码在代码库的一个单独分支上只存在一两天。
需要从非常大的代码库的2个部分访问数组,而我没有很多方法可以使这两个部分彼此通信而没有很多问题。
我正在考虑两种设计:
globalTweakingArray.h
v1
#define TWEAKING_ELEMENTS
float tweakingArray[TWEAKING_ELEMENTS];
v2
#define TWEAKING_ELEMENTS
float *tweakingArray;
// Where can I malloc this
现在,我的困惑来自于它们的使用方式,它们所处的地址空间等。目标是,在a耦合的c ++源文件中,它们可以#import "globalTweakingArray.h"
并且都在读取和写入相同的值
我对全局变量的含义有些困惑,因此我不确定v1
和v2
的设计会带来什么危险。此外,我什至不确定如何为v2
中的数组分配一些空间。
这两种设计中是否有定义全局数组的正确方法?两者都有哪些危险?它们甚至是定义此全局调整数组的正确方法吗?
旁注:我将要从中访问此数组的地方之一是Objective-C源代码。没关系吧?浮点数是浮点数,指针是指针,对吗?
答案 0 :(得分:1)
在研究了潜在的解决方案之后,这就是我最终想要的解决方案。在标头中包含变量也会导致一些编译器问题,因此我现在进行以下设置。
标题
#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;
}
请记住,如果您有引用此C ++代码的Objective-C代码,那么Objective-C代码实际上必须是Objective-C ++,这意味着文件名称必须以.mm结尾。这可能会带来更多的并发症。