我有2个定义,其中一个带有一个字符串,另一个带有一个数字。如何从字符串和数字定义一个常量数组。这个数组中还有一些额外的常量。C字符串到阵列
我该如何编写这段代码,使之在数组foobar中具有0x22,0x41,0x42,0x42,0x21,来自定义的FOO和BAR?
#define FOO "AB"
#define BAR 33
extern int rs232_write(const unsigned char *data, unsigned char count);
const unsigned char foobar[] =
{
0x22,
FOO[0], /*what must i put here, this do not work*/
FOO[1],
0x42,
BAR,
};
int main(void)
{
rs232_write(foobar,sizeof(foobar));
return 1;
}
在GCC,例如,我得到的错误:
./001.c:9:5: error: initializer element is not constant
FOO[0], /*what must i put here*/
^
弦乐总是具有相同的长度。 我也试着在其他的方式:我也得到一个错误
#define FOO "AB"
#define BAR 33
extern int rs232_write(const unsigned char *data, unsigned char count);
const char foobar[] = \
"\x22" \
FOO \
"\x42" \
BAR /*what must i put here, this also not work*/
int main(void)
{
rs232_write(foobar,sizeof(foobar));
return 1;
}
这里,例如GCC打印:
./002.c:2:13: error: expected ‘,’ or ‘;’ before numeric constant
#define BAR 33
^
我就没有太大的空间,微控制器的工作,所以我会喜欢避免在运行时创建数组,我的编译器只支持C89。
有什么不对你告诉我们的代码? –
查看评论,编译器不接受它(也试用gcc),“错误:初始化器元素不是常量”和“错误:预计','或';'数字常量之前” – 12431234123412341234123
当发布关于构建错误的问题时,在问题的正文中始终包含确切的错误(未编辑和未修改,最重要的*完整*表格)。最好是完整版本日志的直接复制粘贴。 –