为什么这不起作用:
#define PORT_ID_MAX_CHAR 6
typedef struct {
int phys;
char name[PORT_ID_MAX_CHAR];
}tPortMap;
struct tPortMap c_portMap[] = { 0, "test" }, { 1,"test" };
GCC对我说myfile.c:8:46: error: expected identifier or ‘(’ before ‘{’ token
struct tPortMap c_portMap[] = { 0, "test" }, { 1,"test" };
,我不知道为什么......我很困惑......
EDIT1
使用额外的括号我得到错误:
struct tPortMap c_portMap[] = {{ 0, "test" }, { 1,"test" }};
myfile.c:8:17: error: array type has incomplete element type
struct tPortMap c_portMap[] = {{ 0, "test" }, { 1,"test" }};
答案 0 :(得分:2)
您需要另外一对括号来围绕数组元素的数据。
此外,由于您已经struct tPortMap
编辑typedef
,因此您无需使用tPortMap
。
tPortMap c_portMap[] = { { 0, "test" }, { 1,"test" } };
^^ ^^
使用时
struct tPortMap c_portMap[] = { { 0, "test" }, { 1,"test" } };
编译器认为你声明了一个新的struct
,这显然是不完整的。
答案 1 :(得分:0)
请改为尝试:
#include <stdio.h>
#define PORT_ID_MAX_CHAR 6
typedef struct tPortMap {
int phys;
char name[PORT_ID_MAX_CHAR];
}tPortMap;
int main(void)
{
tPortMap c_portMap[] = { { 0, "test" }, { 1,"test" } };
printf("%s\n", c_portMap[0].name);
return 0;
}