#define
私はサードパーティのコードで次のことに遭遇しました:
#define Endian_StreamGetLittleInt(ppBytes) \
(int) ((++*(int **)(ppBytes)), \
( ((*(char **)(ppBytes))[3-sizeof(int)] << 24) \
| ((*(char **)(ppBytes))[2-sizeof(int)] << 16) \
| ((*(char **)(ppBytes))[1-sizeof(int)] << 8) \
| ((*(char **)(ppBytes))[0-sizeof(int)])) )
そしてそれは次のように使用されます:
int uiSize = Endian_StreamGetLittleInt(&buf);
ここで、buf
は、char *
以前にファイルから読み取られたデータのバイト数を指します。
ビットシフトセクションは、プラットフォームのエンディアンに一致するようにバイト配列に表示されるバイトを再配置するものとして理解しています(または誰かが私を修正できる可能性があります)。しかし、私は次の使用に戸惑っています。
(++*(int **)(ppBytes)) ,
なぜそこにコンマがあるのですか?