2
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>  

このエラーが発生する理由がわかりません。size_t 型を表示する正しい方法は何printfですか?

4

3 に答える 3

7

size_ttype はstddef.hヘッダー (およびその他のヘッダー、たとえばstdio.h) で定義されます。

あなたのプログラムではprintffunction を使用しているので、すでに を含める必要があることに注意してくださいstdio.h

于 2012-09-25T16:44:10.777 に答える
4

%zstdlibはあなたが望むものであり、それを表示するためにあなたは修飾子を探していると思います

#include <stdlib.h>

size_t arr_size;
printf("%zu\n", arr_size);  // unsigned decimal 
printf("%zx\n", arr_size);  // hex 
于 2012-09-25T16:53:25.710 に答える
1

size_tは C の組み込み型ではありません。 が定義されている場所にインクルード<stddef.h>または<stdlib.h>標準ヘッダーを含める必要があります。size_t

于 2012-09-25T16:47:25.413 に答える