c - 理解 size_t 类型和 sizeof 运算符的问题

标签 c arrays printf sizeof size-t

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 类型的正确方法是什么?

最佳答案

size_t 类型在 stddef.h header (以及其他 header ,例如 stdio.h)中定义。

请注意,在您的程序中,您正在使用 printf 函数,因此您必须包含 stdio.h

关于c - 理解 size_t 类型和 sizeof 运算符的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587406/

相关文章:

c - C 到 D 之间的 typedef 转换有问题

C语言中使用Unix概念的目录监视器代码

c - C 标准为带有十六进制转义序列的字符常量的值指定了什么?

java - 从对象本身确定对象在数组中的索引

c - printf中的*有什么用?

c++ - 如何从 uint32_t 打印十六进制?

c - 如何使用来自 Linux 内核模块的 Linux 系统调用

无法按预期取消引用多维数组

c++ - 创建一个越界数组

c - 在 printf-in 非 0 终止字符串中使用精度的可移植性