簡體   English   中英

types.h中的內容-編譯器在哪里定義int,signed int和其他寬度?

[英]Content within types.h — where does the compiler define the width of int, signed int and others?

我同時閱讀了/usr/include/bits/types.h/usr/include/sys/types.h ,但只看到它們使用“ unsigned int”或“ signed int”為我們定義了其他一些相對很少使用的類型,例如:

typedef signed char __int8_t;
...
typedef signed int __int32_t;

要么:

#define __S32_TYPE              int
#define __U32_TYPE              unsigned int;

關於“原始定義的有signed int (或int )在哪里定義?” 和“在哪個文件中,gcc決定int在我的x86-64服務器中應為4字節寬”? 我什么都找不到。

我想知道gcc / g ++編譯器為我們定義這些原始類型的過程,並希望查看原始的定義文件。 請告訴我最初的立場,或給我一些有關找到他們的方法的啟發。

intunsigned intlong和其他類型是系統類型,它們由編譯器本身定義。 編譯器對這些類型有一些要求,例如int必須至少為16位,但是編譯器可能會使其更長。 通常, int表示至少16位的最有效整數類型

您不應該依賴於int的實際大小,如果需要容納超過32767的int,請堅持使用longlong long類型。 如果由於所需的溢出行為而需要一定數量的位積分,則可以使用uint16_t / uint32_t類型。 如果要確保至少有一定數量的位,還可以使用uint_fast16_t / uint_fast32_t

基本類型是編譯器固有的。 它們是在編譯編譯器時內置的,沒有在您可以輕松找到的任何地方定義。 (在代碼中的某些地方有相關信息,但是要找到它並不是特別容易。)

因此,您將無法直接在標題中找到該信息。 您可以從sizeof()運算符獲取尺寸信息。 您可以從<limits.h><float.h>的宏推斷尺寸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM