求这条语句意思
#define RAM_test (*(unsigned short int*)0x270000)
这是定义一个宏,而不是语句,因为显然它没有分号。
.
这个宏是要取地址0x270000处的值,该值为unsigned short int类型。这个宏的意思可以这样拆分:
<1> (unsigned short int*)0x270000:表示把0x270000当作指向unsigned short int类型的指针;
<2> *(unsigned short int*)0x270000:表示取出<1>中指针所指向的值。
.
举一个例子:
unsigned short int k = 5;
unsigned short int *p = &k;
.
此时的p就相当于问题中的0x270000,*(unsigned short int*)p就正是表示k的值5。
.
不妨再看看如下代码(VC6 + Debug方式):
#include <stdio.h>
#include <stdlib.h>
.
#define RAM_test (*(unsigned short int*)0x270000)
.
int main(void)
{
.
printf("%08X\n", RAM_test);
.
return 0;
}
在printf函数行下断点,查看内存地址0x270000处:
00270000 55 00 0C 03 75 00 04 03 U...u...
可以看到该地址处的unsigned short int类型的值为0x0055(short型占2字节),所以最终输出结果:00000055。
.
说明:不同的环境,测试的结果可能不同。因为0x270000处的值并未在别的地方设定,所以,应为一内存处的未定义值。
[ 本帖最后由 prankmoon 于 2009-9-1 21:05 编辑 ]