在我的代码里面有如下实现:
static concrete_command(int argc, char * argv[], char* buf, int len)
{
int arr_size = sizeof(array)/sizeof(array[0]);
// do some concrete handling
}
const structure arrray[] =
{
{"cmd", min_argc, max_argc, operationMode, "description......"},
// ......
{ NULL, 0, 0, 0, NULL}
};
编译告警path/to/main.c:6:40: error: invalid application of 'sizeof' to incomplete type 'struct array[]'
开始不知道为什么,后来网上搜索了下,得出如下结论
1. sizeof不能用在extern变量,
2. sizeof 的计算发生在代码编译 的时刻。。
3. extern 标注的符号 在链接的时刻解析。。。
所以 sizeof 不知道 这个符号到底占用了多少空间。
最后解决这个告警有如下方法:
1. 定义变量 const size_t num_commands = sizeof (array) / sizeof (array[0])
阅读(4712) | 评论(0) | 转发(0) |