我的代码无法使用此错误消息成功构建:
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
,但它没有帮助我。
答案 0 :(得分:4)
使用一点C预处理器技巧,您可以跳过宏并只调用函数:
(hton_us)(&fi.size, 1);
通过在括号中包含hton_us
,它告诉编译器无法展开此宏,因为它没有使用任何args调用,因此调用该函数。
答案 1 :(得分:3)
检查你的头文件,你可能在那里:
#ifndef ENDIAN_LITTLE
#define hton_us(us)
#define hton_ul(ul)
#endif
所以可能没有定义ENDIAN_LITTLE