我试图通过将一个变量插入到多个数组中来减少文件行。因此,我希望有一个字符串或数组变量,如下所示:
new combomeals[] = {
3025101, 3025100, 3003000, 3025002, 3030101, 3025001, 3025000, 3021602, 3031402, 3020100,
3031401, 3031400, 3031302, 3020242, 3031301, 3031300, 3021702, 3021701, 3021700, 3020602,
3021601, 3030100, 3021600, 3021502, 3021501, 3020201, 3021500, 3020150, 3020502, 3020501,
3020500, 3001802, 3001801, 3001800, 3001702, 3001701, 3001700, 3011602, 3011601, 3011600,
3011502, 3020202, 3011501, 3011500, 3011232, 3011231, 3011202, 3011201, 3010602, 3010601,
3010600, 3010902, 3010901, 3010900, 3011102, 3011101, 3011100, 3011002, 3011001, 3011000,
}它实际上比这要长得多,但我为了解释而缩短了它...我想把combomeals[]放到其他数组中。下面的方法不起作用,但是你会明白的:
new first_array[] = {
1,
2,
3,
combomeals[],
}
new second_array[] = {
4,
5,
6,
combomeals[],
}
new third_array[] = {
7,
8,
9,
combomeals[],
}最终目标是将第一个数组放入其他几个数组中。请让我知道,如果这是有意义的,如果你能够帮助!
谢谢!
发布于 2013-06-15 04:27:40
您不能以您正在尝试的方式扩展数组。假设new已被别名为整数类型,那么如果列表中的所有元素都是相同类型,则编译器将只接受first_array的初始化器列表。但是列表的最后一个元素是一个语法错误,因为combomeals是一个数组,而combomeals[]不属于初始化器列表。
second_array和third_array也是如此。
您可以通过将combomeals中的数字放入宏中来完成类似的操作:
#define COMBOS \
3025101, 3025100, 3003000, 3025002, 3030101, 3025001, 3025000, 3021602, 3031402, 3020100, \
3031401, 3031400, 3031302, 3020242, 3031301, 3031300, 3021702, 3021701, 3021700, 3020602, \
3021601, 3030100, 3021600, 3021502, 3021501, 3020201, 3021500, 3020150, 3020502, 3020501, \
3020500, 3001802, 3001801, 3001800, 3001702, 3001701, 3001700, 3011602, 3011601, 3011600, \
3011502, 3020202, 3011501, 3011500, 3011232, 3011231, 3011202, 3011201, 3010602, 3010601, \
3010600, 3010902, 3010901, 3010900, 3011102, 3011101, 3011100, 3011002, 3011001, 3011000,
new combomeals[] = { COMBOS };
new first_array[] = { 1, 2, 3, COMBOS };
new second_array[] = { 4, 5, 6, COMBOS };
new third_array[] = { 7, 8, 9, COMBOS };如果您的编译器在处理很长的源代码行时遇到问题,您可能需要拆分COMBOS。它不太方便,但c89编译器只需要支持509字节长的源文件。
#define COMBOS1 \
3025101, 3025100, 3003000, 3025002, 3030101, 3025001, 3025000, 3021602, 3031402, 3020100, \
3031401, 3031400, 3031302, 3020242, 3031301, 3031300, 3021702, 3021701, 3021700, 3020602, \
3021601, 3030100, 3021600, 3021502, 3021501, 3020201, 3021500, 3020150, 3020502, 3020501
#define COMBOS2 \
3020500, 3001802, 3001801, 3001800, 3001702, 3001701, 3001700, 3011602, 3011601, 3011600, \
3011502, 3020202, 3011501, 3011500, 3011232, 3011231, 3011202, 3011201, 3010602, 3010601, \
3010600, 3010902, 3010901, 3010900, 3011102, 3011101, 3011100, 3011002, 3011001, 3011000
new combomeals[] = {
COMBOS1,
COMBOS2,
};
new first_array[] = {
1, 2, 3,
COMBOS1,
COMBOS2,
};
/* ...etc... */如果您的C编译器不符合要求,您可能需要进一步分解这些行。
https://stackoverflow.com/questions/17116070
复制相似问题