2014-03-02 22 views
0
int alpharomeo_probe(struct tty_struct *tty, uint32_t *arg) 
{ 

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

} 
+1

在期望左值的上下文中,它並不意味着什麼,因爲它不是左值。你確定你正在看的代碼應該是C並且你正確地複製了它嗎? –

回答

0

那麼在該代碼的上下文中,它並不代表什麼意思。這種語法會表明arg被轉換爲一個指向32位無符號整型的指針,然而在那個例子中,它出現在一個左值的地方,而在這個地方,一個轉換顯然是不相關的。所以它會讓我相信它是一個來自過度加熱的括號用戶的聲明,聲明瞭一個名爲arg的變量,它是一個指向uint32類型的指針。但是,arg已經被聲明。所以我猜測變量名稱被錯誤地複製了,或者它在括號的錯誤一側。

2

0xDEADBEEF(「死牛肉」)經常用於指示軟件 嵌入式系統中的崩潰或死鎖。 DEADBEEF最初用於 標記新分配的尚未初始化的內存區域 - 掃描內存轉儲時,很容易看到DEADBEEF。它被IBM RS/6000系統,32位PowerPC處理器上的Mac OS以及Commodore Amiga的 用作魔術調試值。在Sun Microsystems的 Solaris上,它標記釋放的內核內存。在運行在Alpha 處理器上的OpenVMS上,按CTRL-T可以看到DEAD_BEEF。 DEC Alpha SRM控制檯有一個後臺進程,用於捕獲由PS標識爲「BeefEater等待0xdeadbeef」的內存錯誤 。

所以把它作爲arg = NULL; 無論如何,我很想知道代碼來自哪裏。

+3

我不相信他問的是DEADBEEF的含義,而是在作業前做了什麼(uint32 *)。 – PandaRaid

0

Ans: - 指向包含參數的4個字節的位置。第二行是將該值設置爲deadbeef