跳轉到內容

C 程式設計/stddef.h

來自華夏公益教科書,開放的書籍,開放的世界

stddef.h 是 C 程式語言標準庫中的一個頭檔案,它定義了宏 NULL 和 offsetof 以及型別 ptrdiff_t、wchar_t 和 size_t[1]

在 C 中,以這種方式包含標頭檔案 "stddef.h"

#include <stddef.h>

在 C++ 中,以這種方式包含標頭檔案 "cstddef"

#include <cstddef>

名稱空間

[編輯 | 編輯原始碼]

標頭檔案 "stddef.h" 將其定義放置在全域性範圍內;標頭檔案 "cstddef" 將 size_tptrdiff_t 放置在名稱空間 std 中。

一個宏,擴充套件為一個空指標常量。它可以根據編譯器和語言定義為 ((void*)0)、0 或 0L。

offsetof(type, member)

[編輯 | 編輯原始碼]

一個功能宏,用於確定指定結構型別中指示成員欄位的位元組偏移量。

型別 size_t

[編輯 | 編輯原始碼]

型別 size_t 表示用於表示記憶體區域物件的大小以及用於取消引用陣列元素的適當型別。它具有與實現相關的尺寸;通常但不一定,它在 32 位系統上具有 32 位表示,在 64 位系統上具有 64 位表示。它是無符號的。

此型別在某些實現中有一個名為 ssize_t 的帶符號變體,它在 UNIX 標頭檔案 "unistd.h" 中定義。對於 GNU C,型別 ssize_t 在 "stddef.h" 中定義,因此與 size_t 位於同一個檔案中。

型別 wchar_t

[編輯 | 編輯原始碼]

一個與實現相關的“寬字元”型別,它在 C++ 程式語言中是預定義的,但在 C 程式語言中需要標頭檔案 "stddef.h" 或 "wchar.h"。

型別 ptrdiff_t

[編輯 | 編輯原始碼]

型別 ptrdiff_t 是一種可以儲存兩個指標相減結果的型別,這兩個指標指向同一個物件的兩個專案。ptrdiff_t 的底層型別因實現而異。

一個物件可能大於 PTRDIFF_MAX。兩個指標相減,如果它們的差大於 PTRDIFF_MAX / PTRDIFF_MIN,會導致未定義的行為。

參考資料

[編輯 | 編輯原始碼]
  1. http://pubs.opengroup.org/onlinepubs/7908799/xsh/stddef.h.html
[編輯 | 編輯原始碼]
華夏公益教科書