![C에서 "&"의 의미(여기에는 Linux 커널 기능과 유사한 매크로가 있습니다) [닫기]](https://linux55.com/image/65433/C%EC%97%90%EC%84%9C%20%22%26amp%3B%22%EC%9D%98%20%EC%9D%98%EB%AF%B8(%EC%97%AC%EA%B8%B0%EC%97%90%EB%8A%94%20Linux%20%EC%BB%A4%EB%84%90%20%EA%B8%B0%EB%8A%A5%EA%B3%BC%20%EC%9C%A0%EC%82%AC%ED%95%9C%20%EB%A7%A4%ED%81%AC%EB%A1%9C%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4)%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
#define TCP_SKB_CB( __skb ) ((struct tcp_skb_cb *)&((__skb)->cb[0]))
&
이 경우 이것은 무엇을 의미합니까?
답변1
이것은 표준 C "주소" 연산자입니다. 위 구조는 다음을 의미합니다.
__skb
: 매크로에 할당된 매개변수(다음을 가리킴)struct skbuff
)(__skb)->cb
:cb
skb의 배열(__skb)->cb[0]
: 배열의 첫 번째 요소&((__skb)->cb[0])
: 첫 번째 요소의 주소((struct tcp_skb_cb *)&((__skb)->cb[0]))
: 첫 번째 요소의 주소로, 포인터로 변환됩니다.struct tcp_skb_cb