宏传递了2个参数,但只需1个

时间:2012-10-18 12:06:51

标签: c++ compiler-construction compiler-errors avr-gcc

我的代码无法使用此错误消息成功构建:

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

2 个答案:

答案 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