如何设计易于导入的全局浮点数组

时间:2019-07-14 22:01:43

标签: c

在我的程序内部,我试图定义一个在程序内可以全局访问的浮点数组。这些只是出于开发目的,因此我正在尝试使用最少的代码更改来实现此数组。

我确实意识到这是非常糟糕的编程习惯和风格,但是我在一个开发人员项目中,并且该代码在代码库的一个单独分支上只存在一两天。

需要从非常大的代码库的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"并且都在读取和写入相同的值

我对全局变量的含义有些困惑,因此我不确定v1v2的设计会带来什么危险。此外,我什至不确定如何为v2中的数组分配一些空间。

这两种设计中是否有定义全局数组的正确方法?两者都有哪些危险?它们甚至是定义此全局调整数组的正确方法吗?

旁注:我将要从中访问此数组的地方之一是Objective-C源代码。没关系吧?浮点数是浮点数,指针是指针,对吗?

1 个答案:

答案 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结尾。这可能会带来更多的并发症。