sizeof 结构体数组问题
如下定义struct F_tab{
const char *F;
uint16_t angle;
};
const struct F_tab tab1_3[]={
{"F1.8",0},
{"F2",36},//4*9度
{"F2.2",54},
{"F2.5",72},
{"F2.8",90},
{"F3.2",108},
{"F3.5",135},
{"F4",153},
{"F4.5",162},
{"F5",180},
{"F5.6",198},
{"F6.3",216},
{"F7.1",243},
{"F8",270},
{"F9",297},
{"F10",324},
{"F11",351},
{"F13",378},
{"F14",405},
{"F16",423},
};
sizeof(tab1_3) 在MDK4下报错,MDK5下OK
偶然解决
定义必须sizeof同.c文件才行
extern声明的.c文件sizeof报错:L
原因不清楚
MDK5也是一样 atab1_3定义了吗? toofree 发表于 2019-12-3 10:51
atab1_3定义了吗?
自然是定义了,只有定义在本文件才不会报错,
通过extern 方式引用到其他文件 数组内容可以访问 不过预编译sizeof()会报错 看一下是不是C标准的问题,试一下C99 这样玩比较悬
如果在同一个c文件 函数在变量定义后 能得到你想要的长度
如果在其它c文件 通过.h定义去取sizeof 是得不到长度的 一般是4 指针的长度
页:
[1]