((uint32_t *)arg)是什么意思? (上下文)

时间:2014-03-02 20:42:33

标签: c driver

int alpharomeo_probe(struct tty_struct *tty, uint32_t *arg)
{

    ((uint32_t *)arg) = 0xdeadbeef;  // This line
         <more code>

}

3 个答案:

答案 0 :(得分:2)

  

0xDEADBEEF(“死牛肉”)经常用于表示软件   嵌入式系统中的崩溃或死锁。 DEADBEEF最初用于   标记尚未初始化的新分配的内存区域    - 扫描内存转储时,很容易看到DEADBEEF。它由IBM RS / 6000系统,Mac OS在32位PowerPC处理器和   Commodore Amiga是一个神奇的调试值。在Sun Microsystems上   Solaris,它标志着释放的内核内存。在Alpha上运行的OpenVMS上   处理器,按CTRL-T可以看到DEAD_BEEF。 DEC Alpha   SRM控制台有一个后台进程可以捕获内存错误,   被PS确定为“BeefEater等待0xdeadbeef”。

所以把它当作arg = NULL; 无论如何,我很想知道代码的来源。

答案 1 :(得分:0)

在该代码的上下文中,它并不意味着什么。这种语法表明arg被转换为指向32位无符号int类型的指针,但在该示例中,它出现在左值的位置,其中转换显然不相关。所以它会让我相信它是一个过分热心的括号用户的声明,声明一个名为arg的变量,它是一个指向uint32类型的指针。但是,arg已经宣布。所以我猜测变量名被错误地复制了或者它在括号的错误一侧。

答案 2 :(得分:0)

并且: - 指向包含参数的4字节位置。第二行是将该值设置为deadbeef