在大多數x86/x86_64體系結構中,一個地址指向一個字節。 但是在我使用的微控制器上,地址指向2個字節。C/C++:如何獲得一個地址尋址的字節數
有沒有辦法知道地址指向的字節數? (像宏或其他東西)
在大多數x86/x86_64體系結構中,一個地址指向一個字節。 但是在我使用的微控制器上,地址指向2個字節。C/C++:如何獲得一個地址尋址的字節數
有沒有辦法知道地址指向的字節數? (像宏或其他東西)
「字節」是指一臺機器上「最小的可尋址單元」;一個地址總是標識一個字節。在一些機器上,一個字節將是8位;在其他情況下,它可能是32位。
C標準定義char
是最小的可尋址單元的機器上;和該單元中的位數的宏CHAR_BIT
。它將成爲<limits.h>
/<climits>
中的一個宏。
C99 6.2.6.1腳註40表示:
甲字節包含
CHAR_BIT
比特,和類型unsigned char
範圍從0
至2 CHAR_BIT -1的值。
不完全正確,但強烈暗示如: C99 6.2.6.1/4:存儲在任何其他對象類型的非位字段對象
值包括
n
×CHAR_BIT
位,其中n
是該類型的對象的大小,以字節爲單位。
它說,sizeof(char) == 1
有人可能會補充說,在硬件層面上,可能有不同類型的指針。我在'sizeof(char *)!= sizeof(int *)'的機器上工作過,因爲要尋址一個字節,機器需要額外的信息。 –
沒有什麼,你可以用這些信息做是你得到它,將具有良好定義的行爲。 –
這個問題不是我爲什麼需要這個。 -.-' –
@hl:這就是爲什麼這不是答案。 –