tanic 发表于 2019-12-2 16:11:08

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





tanic 发表于 2019-12-2 17:14:11

偶然解决
定义必须sizeof同.c文件才行
extern声明的.c文件sizeof报错:L
原因不清楚
MDK5也是一样

toofree 发表于 2019-12-3 10:51:43

atab1_3定义了吗?

tanic 发表于 2019-12-3 16:37:31

toofree 发表于 2019-12-3 10:51
atab1_3定义了吗?

自然是定义了,只有定义在本文件才不会报错,
通过extern 方式引用到其他文件 数组内容可以访问   不过预编译sizeof()会报错

Genglilai 发表于 2020-8-31 22:52:50

看一下是不是C标准的问题,试一下C99

cloudcn 发表于 2020-9-7 12:00:29

这样玩比较悬
如果在同一个c文件 函数在变量定义后 能得到你想要的长度
如果在其它c文件 通过.h定义去取sizeof 是得不到长度的 一般是4 指针的长度
页: [1]
查看完整版本: sizeof 结构体数组问题