1

我的代码没有成功构建此错误消息:

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但它对我没有帮助。

4

2 回答 2

4

使用一点 C 预处理器技巧,您可以跳过宏并调用函数:

(hton_us)(&fi.size, 1);

通过hton_us用括号括起来,它告诉编译器这个宏不能被扩展,因为它没有用任何参数调用,因此函数被调用了。

于 2012-10-18T12:12:43.473 回答
3

检查你的头文件,你可能有以下内容:

#ifndef ENDIAN_LITTLE
#define hton_us(us)
#define hton_ul(ul)
#endif

所以可能没有定义 ENDIAN_LITTLE

于 2012-10-18T12:10:03.190 回答