1. ホーム
  2. Qt

gcc コンパイル時にオペランドがバイナリに変換されない -解決方法

2022-02-08 18:29:33

pcapライブラリのパケットキャプチャを行うプログラムで、pcap_head->caplen - (unsigned int)(/*(unsigned char *)*/data - packet); というアルゴリズムを使用したら、 "invalid operands to binary -"." と報告されました。

packetはpcap_loopのコールバック関数の第3パラメータであるchar *型、dataは各レイヤーのバイトから計算したTCP先頭位置です。ただしpacketは符号なし文字ポインタ、dataは符号あり「コードからマスク(符号なし文字 *)を削除してください」。エラーは消えます。

gccは数学演算の型チェックをより厳格に行うようです。