编译报错:error: invalid application of ‘sizeof’ to incomplete type ‘struct slave_readWrite_def[]’
原因:
sizeof不能用在extern变量
sizeof 的计算发生在代码编译 的时刻
extern 标注的符号 在链接的时刻解析
所以 sizeof 不知道 这个符号到底占用了多少空间
config.c
slave_readWrite_def slave_coil_readWrite[] = {
{0, i_readwrite},
{1, o_read},
};
`
main.c
int main()
{
int i = 0, ret = 0;
int len_coil = sizeof(slave_coil_readWrite)/sizeof(slave_coil_readWrite[0]);
}
解决方式:
定义的地方多定义一个变量计算长度
config.c
slave_readWrite_def slave_coil_readWrite[] = {
{0, i_readwrite},
{1, o_read},
};
int len_coils = sizeof(slave_coil_readWrite)/sizeof(slave_coil_readWrite[0]);
main.c
int main()
{
int i = 0, ret = 0;
int len_coil = len_coils;
}