%zu 格式说明符与 C99 不起作用

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

我愿意在格式字符串中使用

size_t
格式说明符打印
%zu
值,但是,我总是得到“zu”作为输出,而不是
size_t
变量中的实际值:

size_t val = 10;
printf("val: %zu\n", val);  // outputs "zu", not "10"

我发现对于其他面临类似问题的人来说,解决方法是将 C 标准设置为 C99 或更高版本。

我正在使用 CMake 构建我的项目,其中包含以下行:

# Set the C standard to C11
set(CMAKE_C_STANDARD 11)

所以,我假设我可以走了,但不,我仍然遇到同样的问题。

我可能错过了什么吗?

我正在使用以下堆栈:

  • CMake 版本 3.22
  • 与arm-none-eabi-gcc 10.3.1版本工具链交叉编译
  • 编译标志:
    -Os -g -ffunction-sections -fdata-sections -fno-common -fmessage-length=0 -mcpu=cortex-m4 -mthumb -mthumb-interwork -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16

我还添加了

-std=c11
编译选项以防万一。还是不行。

c cmake c99 format-specifiers format-string
1个回答
0
投票

我可能遗漏了什么吗?

您使用的 Newlib 标准 C 库实现禁用了

size_t
以及“nano”版本中
long long
中的
printf

© www.soinside.com 2019 - 2024. All rights reserved.