簡體   English   中英

unsigned long和uint32_t?

[英]unsigned long and uint32_t?

我正在研究套接字編程,並且了解了inet_addr函數。 但是我很困惑如何處理in_addr_t類型。

inet_addr函數返回in_addr_t類型,是uint32_t ,然后做我必須使用uint32_t類型變量來處理呢?

在書中,示例將其作為unsigned long類型處理,但我不明白為什么使用這種方式。

unsigned long conv_addr = inet_addr(addr1); // unsigned long == uint32_t?

您不必使用uint32_t處理從inet_addr返回的值。 您可以使用任何可以表示可能返回或在計算中使用的任何值的類型。 但是為什么不使用uint32_tin_addr_t類型呢?

您也可以對inet_addr()函數使用long類型,因為大多數體系結構對long類型都使用32位(4字節),但並不總是適用

某些體系結構將64位用於類型。LP64約定將64位用於長類型

但是uint32_t的大小始終為32位 ,與編譯器遵循的約定無關。

如果使用MSVC編寫程序,則長類型使用32位。

對於gcc,它取決於計算機硬件和GCC的實現。

當您確信long大小為32位時,可以安全地使用unsigned long分配給inet_addr()的返回類型。

建議inet_addr ()使用uint32_t (也稱為無符號32位內存),因此您根本不需要關心long類型的大小。

暫無
暫無

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

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