首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么` `sizeof var`没有显示真实大小?

为什么` `sizeof var`没有显示真实大小?
EN

Stack Overflow用户
提问于 2018-07-23 09:33:41
回答 1查看 43关注 0票数 0

假设我们使用avr-gcc编译具有以下结构的代码:

代码语言:javascript
复制
typedef struct {
  uint8_t bLength;
  uint8_t bDescriptorType;
  int16_t wString[];
} S_string_descriptor;

我们像这样全局初始化它:

代码语言:javascript
复制
const S_string_descriptor sn_desc PROGMEM = {
  1 + 1 + sizeof L"1234" - 2, 0x03, L"1234"
};

让我们来看看它生成了什么:

代码语言:javascript
复制
000000ac <__trampolines_end>:
  ac:   0a 03           fmul    r16, r18
  ae:   31 00           .word   0x0031  ; ????
  b0:   32 00           .word   0x0032  ; ????
  b2:   33 00           .word   0x0033  ; ????
  b4:   34 00           .word   0x0034  ; ????
        ...

因此,根据需要,字符串内容确实跟随在结构的前两个元素之后。

但是如果我们尝试检查sizeof sn_desc,结果是2。变量的定义是在编译时完成的,sizeof也是一个编译时操作符。那么,为什么sizeof var没有显示var的真实大小呢?编译器的这种行为(例如,将任意数据添加到结构中)记录在哪里?

EN

回答 1

Stack Overflow用户

发布于 2018-07-23 10:38:24

sn_desc是一个指向闪存的2字节指针。它旨在与LPM等人一起使用,以便检索实际数据。无法获得此数据的实际大小;请单独存储它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51470592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档