Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305201
  • 博文数量: 66
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 509
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-29 13:56
文章分类
文章存档

2018年(2)

2017年(6)

2016年(34)

2015年(24)

我的朋友

分类: C/C++

2016-05-05 15:03:54


在我的代码里面有如下实现:

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])

阅读(4292) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~