在C ++中是否可以这样(在Arduino上)?

#include "stdio.h"

String str = "foo";

int i[strLength()]; // <- define length of array in function

int strLength() {
  return str.length();
}

int main(void) {
   ...
}

先感谢您!

===============>>#1 票数:3

如果您使用的是c ++,那么正确的解决方案是std :: vector。 您需要查看std :: vector的文档,但这里是您的代码转换为std :: vector。

然后使用std :: vectors,就像使用常规数组一样,使用“[]”运算符。

#include <cstdio>
#include <vector>

String str = "foo";

int strLength() {  // Needs to come before the use of the function
  return str.length();
}

std::vector<int> i(strLength() ); //Start at strLength


int main(void) {
   ...
}

===============>>#2 票数:2 已采纳

不。你需要i成为一个指针,并在你的main分配数组:

int *i = NULL;

// etc.

int main(void) {

    i = (int*) malloc(sizeof(*i)*strLength());

    // etc.
}

===============>>#3 票数:1

我知道这不是你所希望的,但我会做一些像这样不优雅的事情:

String str = "foo";
#define MAX_POSSIBLE_LENGTH_OF_STR 16

...

int i[MAX_POSSIBLE_LENGTH_OF_STR];

我们的想法是为阵列分配比实际需要更多的空间,并且避免使用数组的额外部分。

或者,如果您不打算经常在源代码中更改str的定义,则可以通过执行以下操作来节省一些RAM:

String str = "foo";
#define LENGTH_OF_STR 3

...

int i[LENGTH_OF_STR];

  ask by speendo translate from so

未解决问题?本站智能推荐:

3回复

数组的全局指针

似乎我仍然没有正确使用C指针。 我希望全局数组(指针)j的长度是动态的。 我有这个(Arduino)代码 我该怎么做呢? 先感谢您!
3回复

Arduino / C ++ GlobalVars与局部变量

我现在正在研究Arduino项目。 它的作用基本上是这样的: 从PC读取串行数据 解析收到的数据 使用此数据在TFT屏幕上绘制。 我当前的方法大量使用全局变量。 没有它们,我将不得不使用一些嵌套函数,这些函数将变量传递给3级深度。 这让我开始思考哪种方法在
1回复

如何全局#define预处理程序变量?

我正在用C ++编写Arduino草图。 我希望用户能够直接在sketch.ino文件中#define常量,以编译代码。 Arduino IDE使用g ++编译器。 假设我们有三个文件: 在sketch.h中,我定义了 然后,用户在sketch.ino中定义MYOPTI
1回复

如何使函数永久更改全局数组

最近,我一直在为基于文本的游戏开发一个库存系统,该系统使用一个全局数组作为库存系统,并使用相应的功能读取该数组中的true或false。 我遇到的问题是,我用来修改数组的函数 仅在其所包含函数的范围内修改该数组。该数组在.cpp文件中定义如下: 然后在.h文件中声明如下:
1回复

C ++中全局数组初始化时的语法和缺少类型说明符错误

对于以下代码行: 我遇到这些错误行: 这些数组的声明有什么问题?
1回复

C ++ Intel Parallel Studio 2015中的2D动态分配的全局数组

因此,我充分利用了该站点的优势,以获取我认为正确的语法,但是我仍然很困惑。 我在当前使用FFT的项目中引入了一些现有的快速Hartley变换代码,并且所有这些都在工作,除了FHT的大小和重叠是硬编码的,我想使用FFT代码中的值来动态设置运行时的大小。 这需要2D全局数组。 所以
1回复

XCode Linker错误1-全局数组错误?

我在Visual Studio 13中编写了C ++ Projekt,现在我想在Mac上编译它。 在检查完我的代码后,我现在得到一个链接器错误1,其规范如下: ld:体系结构x86_64 clang的6个重复符号:错误:链接器命令失败,退出代码为1(使用-v查看调用) 除此之外,我
1回复

2D全局数组错误-数组绑定不是整数常量

我似乎找不到答案。 我意识到在编译时必须知道数组中使用的整数值,而我在这里所看到的似乎符合该标准。 如果我使用: 然后,即使在编译时就知道了pts的值,也遇到了数组绑定错误。 但是,当我使用以下代码时: 我在这里想念什么吗? 如果没有,我该怎么做才能接受分数?
1回复

全局数组在正常声明时会导致段错误,但不会导致指针

我正在使用全局数组(我知道它们是邪恶的)。 这不是一个问题,但我不知道为什么它以一种方式工作而不是另一种方式,因为它们应该是相同的。 (在我目前的工作方式之后,我需要释放内存)。 无论如何,我有这个Snake课程。 我想做,这是全局数组: 我有几个(或者无论如何)几个与此交互
1回复

MPI-如何将计数从本地数组转换为全局数组?

我正在尝试实现用于计数排序的MPI程序。 我已经为每个等级发送了一个本地计数数组以供使用。 当我将它们发送回主进程时,如何确保将所有本地数组都添加到全局数组中? 我已经看到MPI_Reduce获得数组的总和,但是我需要每个单元格的总和。 例: