#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);
其中bufachar *指向先前从文件中读取的数据字节数。
我将 bitshift 部分理解为重新排列字节,因为它们出现在字节数组中以匹配平台的字节顺序(或者也许有人可以纠正我)。但是,我对以下内容的使用感到困惑:
(++*(int **)(ppBytes)) ,
为什么那里有逗号?