我要做的是
基本上,我用宏定义了几个可能的数组:

#define ARRAY_ONE  {0, 2, 7, 8}
#define ARRAY_TWO  {3, 6, 9, 2}
#define ARRAY_THREE  {3, 6, 4, 5}
//etc...

在运行时,我有一个C数组,它在某个类的很多地方都被使用。我希望此数组使用定义值之一,即:
int components[4];

if (caseOne)
{
    components = ARRAY_ONE;
}
else if (caseTwo)
{
    components = ARRAY_TWO;
}
else if (caseThree)
{
    //etc...
}

-
问题
但是,上面的代码不起作用。相反,我犯了个奇怪的错误
Expected expression before '[' token

有谁能解释一下发生了什么,以及我怎样才能达到我的目的吗?任何帮助都将不胜感激-谢谢!

最佳答案

我不认为C数组在声明后可以使用花括号语法进行初始化。只有在声明它们时初始化它们时才能这样做。
尝试用以下方法调整先前发布的答案:

const int ARRAY_ONE[] = {0, 2, 7, 8};
const int ARRAY_TWO[] = {3, 6, 9, 2};
const int ARRAY_THREE[] = {3, 6, 4, 5};

int *components;
if (case1) {
    components = ARRAY_ONE;
} else if (case2) {
    components = ARRAY_TWO;
} else if (case3) {
    components = ARRAY_THREE;
}

关于iphone - 如何在运行时指定数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7061627/

10-14 21:35