void sizeof_test2();
void sizeof_test2()
{
int array[5];
size_t arr_size = sizeof(array);
printf( "sizeof:\n"
"array = %d\n"
"arr_size = %d\n", sizeof(array), sizeof(arr_size));
}
GCC编译器输出:
sizeof_test2.c: In function `sizeof_test2':
sizeof_test2.c:6: error: `size_t' undeclared (first use in this function)
sizeof_test2.c:6: error: (Each undeclared identifier is<br>
reported only once sizeof_test2.c:6: error: for each function it<br>
appears in.) sizeof_test2.c:6: error: parse error before "arr_size"<br>
sizeof_test2.c:10: error: `arr_size' undeclared (first use in this<br>
function) make[2]: [build/Debug/Cygwin-Windows/sizeof_test2.o]<br>
Error 1 make[1]: [.build-conf] Error 2<br>
不知道为什么我收到此错误,通过printf
显示size_t类型的正确方法是什么?
答案 0 :(得分:6)
size_t
类型在stddef.h
标头中定义(以及其他标头,例如stdio.h
)。
请注意,在您的计划中,您使用的是printf
功能,因此您必须包含stdio.h
。
答案 1 :(得分:3)
stdlib是你想要的,为了显示它,我认为你正在寻找%z
修饰符
#include <stdlib.h>
size_t arr_size;
printf("%zu\n", arr_size); // unsigned decimal
printf("%zx\n", arr_size); // hex
答案 2 :(得分:1)
size_t
不是C中的内置类型。您必须包含<stddef.h>
或<stdlib.h>
标准标题,其中size_t
已定义。