İlk: pf
sonra dest_pid
yapıdan parçasıdır ve bunun ardından uint16_t dest_pid;
İkinci bir başka değişken olduğunu düşünüyorum: p
uint8_t
bir göstericidir sen (p[1] << 8)
yaptığınızda için, 8 tarafından pointer içinde ne olduğunu vardiya Örnek p[1] = 0xE5
değiştirdikten sonra 0xE500
olacaktır. Sonucunuzu 2 bayt değişken olan dest_pid
içine koyduğunuzu unutmayın. o değil mi neden
son satırın çeviri
pid
düşük byte (daha az önemli) almak ve
pid
ait (8 tarafından kaydırılır) yüksek byte eklemek ve
pf->dest_pid
koymak büyük olasılıkla
, düşündüğünüzden Başlangıçtan 2 bayt gönderiyoruz ve bunun sebebi, onu, bir birim zaman birimi başına (döngü) gönderen bir veriyolundan almasıdır.
Dereferencing başlatılmamış işaretçi ?? Fikrin ne olduğundan emin değil ama emin olmak için iyi bir fikir değil. Bazı kodları kaçırmadıkça? – mathematician1975
'(p [1] << 8)' bir ifadedir. * [*] Türünden * türetilmiş bir tür (işaretsiz) vardır: sadece imzasız kaliteyi değil, kaliteyi değil “mirasını” alır. – joop
Buradan bakın: http://stackoverflow.com/questions/12131568/bit-shifting-a-byte-by-more-than-8-bit – Downvoter