我对文字数组的定义可能有误。我将以下内容称为一个:
{0x00, 0x01, 0x03}
我有一个接受数组的函数,如下所示:
void mote(char arry[]){}
当我调用此函数时,我希望能够执行以下操作:
mote({0x00, 0x01, 0x03})
然而,我的编译器(C30)抱怨以下错误:
error: syntax error before '{' token
我也用这些括号尝试了上述内容 - > []但我仍然得到同样的错误。
我的问题
1)是否可以将文字数组传递给函数?
2)如果是,怎么样?
提前谢谢大家
答案 0 :(得分:12)
此语法称为数组初始化程序。因此,只有在定义数组时才能使用它。
C11(n1570),§6.7.9初始化
initializer: assignment-expression { initializer-list } { initializer-list , }
但是,在C99中,可以使用复合文字来完成:
mote((char[]){0x00, 0x01, 0x03});
答案 1 :(得分:4)
如果不支持C99,请尝试以下方法:
char cp[] = {0x01, 0x02, 0x03};
mote (cp);