我不是貿易的C開發人員......真相被告知我不是貿易開發人員,所以我使用的術語可能不正確。混合'*'和' - >'語法混淆的指針參考
我已經花了最後一個小時左右的時間閱讀了關於define
的陳述,然後關於pointer
的引用,並且對以下實例頗感困惑。
鑑於:
#define get_u_int16_t (X,O) (*(u_int16_t *)(((u_int8_t *)X) + O))
if (get_u_int16_t(packet->payload, 0) == htons(0x0004)) {
//do something
return;
}
這是否意味着get_u_int16_t(packet->payload, 0)
分割由packet->payload
指針稱爲成8個比特段中的數據,並返回第一個8位(由於+ 0
)?
這是我試圖預留的一部分nDPI庫的例子,afp.c。
[注]
htons()是一個函數,它在主機字節順序取word
(16位)(在大多數機器小端,或大端上大端機),它在網絡轉換爲word
字節順序(總是大端)。在這種情況下,在packet->payload
(謝謝AndreyT!)的偏移量0處將返回word
大端,因此ntop開發人員決定使用htons()
來轉換給定的值(在這種情況下是確定if一個流程是蘋果文件協議),對於網絡堆棧的大端來說是很少的端點。
[更多]
我搬到some questions to a forum that is more conducive to fuzzy questions to have some technicalities understood可能證明對人處理今後類似情況下非常有用。
優秀,容易理解的答案!非常感謝! – mbrownnyc