我的代码未成功构建,并出现以下错误消息:
macro "hton_us" passed 2 arguments, but takes just 1
它发生在这一行:
hton_us( &fi.size, 1 );
这是 hton_us 的参考
void hton_us( iu16 *us, iu8 num )
{
iu16 local;
while( num-- ) {
local=*us;
*us++=swap_us(local);
}
}
我读到了一些类似的问题,告诉我使用
typedef
,但这对我没有帮助。
使用一些 C 预处理器技巧,您可以跳过宏并仅调用函数:
(hton_us)(&fi.size, 1);
通过将
hton_us
括在括号中,它告诉编译器该宏无法扩展,因为它没有使用任何参数调用,因此该函数被调用。
检查你的头文件,你可能有以下内容:
#ifndef ENDIAN_LITTLE
#define hton_us(us)
#define hton_ul(ul)
#endif
所以可能 ENDIAN_LITTLE 没有定义