【发布时间】:2011-04-27 02:00:15
【问题描述】:
在我正在编写的 C 程序中,有一个函数
void *dereference_physical_page(unsigned int ppn);
我打电话给 unsigned int* pde = ((unsigned int*)dereference_physical_page(context >> 12))[vaddr >> 22];
不幸的是,无论我尝试什么,编译器都会给我这个警告,并且根据这个赋值的规范,程序需要没有警告才能编译。
编辑(我以为我已经发布了这个):警告是“初始化使指针从整数而不进行强制转换”。如果我删除 unsigned int* pde 的星号,这可行;但是,我想让 pde 成为一个指针。
我还使 pde 成为一个指针,因为我需要它的范围超出它所在的函数的范围。
有什么线索吗?
【问题讨论】:
-
此外,当我从右侧删除星号时,它会给我一个警告“从指针转换为不同大小的整数”和“下标值既不是数组也不是指针”的错误。
-
您想让我们猜一下警告是什么吗?
标签: c variables pointers casting warnings