我愿意在格式字符串中使用
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)
所以,我假设我可以走了,但不,我仍然遇到同样的问题。
我可能错过了什么吗?
我正在使用以下堆栈:
-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
编译选项以防万一。还是不行。
我可能遗漏了什么吗?
您使用的 Newlib 标准 C 库实现禁用了
size_t
以及“nano”版本中 long long
中的 printf
。