Question

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 compiler output:

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>  

Don't know why I'm getting this error, what's the correct way of displaying a size_t type through printf?

Was it helpful?

Solution

size_t type is defined in stddef.h header (and other headers, for example stdio.h).

Note that in your program your are using printf function so you already have to include stdio.h.

OTHER TIPS

stdlib is what you want, and for displaying it I think you're looking for the %z modifier

#include <stdlib.h>

size_t arr_size;
printf("%zu\n", arr_size);  // unsigned decimal 
printf("%zx\n", arr_size);  // hex 

size_t is not built-in type in C. You must include <stddef.h> or <stdlib.h> standard header where size_t is defined.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top