sscanf 带有字节大小的整数

问题描述 投票:0回答:0

我遇到了 sscanf 覆盖堆栈上另一个变量的问题。我检查了一下,意识到即使我用 sscanf 读取了一个数字,正整数也是这样的:

sscanf(InputBuffer_pu8, "%hhu", %Selection_u8)

根据 sscanf 手册页

hh
前缀将下一个指针指定为
char*
。 然而它在内存中写入了 2 个字节的宽度,从而覆盖了堆栈上的另一个变量。 我通过使用 16 位无符号类型来修复它,但这不应该发生,对吧?我是不是遗漏了什么或者这是 arm-gcc 中的错误? (适用于 Cortex-M33 的 10.2 版) 根据this discussion,它也应该有效。

c gcc arm scanf
© www.soinside.com 2019 - 2024. All rights reserved.