我们在嵌入式平台上使用 C89。我试图打印出 a size_t
,但它不起作用:
#include <stdio.h>
int main(void) {
size_t n = 123;
printf("%zu\n",n);
return 0;
}
而不是123
,我得到了zu
。
其他说明符正常工作。
如果size_t
存在也不应该 zu
在printf
?
这是我应该联系我的图书馆供应商的事情,还是允许图书馆实施排除它?
我们在嵌入式平台上使用 C89。我试图打印出 a size_t
,但它不起作用:
#include <stdio.h>
int main(void) {
size_t n = 123;
printf("%zu\n",n);
return 0;
}
而不是123
,我得到了zu
。
其他说明符正常工作。
如果size_t
存在也不应该 zu
在printf
?
这是我应该联系我的图书馆供应商的事情,还是允许图书馆实施排除它?
如果 size_t 存在,zu 不应该在 printf 中也可用吗?
size_t
至少从 C89 开始就存在,但相应的格式说明符%zu
(特别是长度修饰符z
)仅在 C99 之后才被添加到标准中。
因此,如果您不能使用 C99(或 C11)并且必须size_t
在 C89 中打印,您只需要回退到其他现有类型,例如:
printf("%lu\n", (unsigned long)n);
size_t is returned by sizeof(). %zu specifier prints the length.So to return the size of n,the code should read: #include <stdio.h>
int main(void) { size_t n=123; printf("%zu\n",sizeof (n)); return 0;` }
这工作正常。在我的系统中,它正在打印预期值。由于编译器,您可能会收到错误。我正在使用GCC编译器。如果您只有这个并尝试获取输出,请首先更新 GCC,然后尝试。它会起作用的。