在大多数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:这就是为什么这不是答案。 –