0

因此,即使我正在编译的代码没有“?”,我也会收到此错误。一点也不。我使用 gcc 作为我的编译器和链接器。关于为什么会发生这种情况的任何提示?

此外,当我从函数名中删除“l”时,错误就会消失。我很困惑。

出现错误的代码片段:

unsigned long htonl(unsigned long ll) //Says error is on this line
{
    UDWord x;
    UDWord y;

    x.ul = ll;
    y.uc[0] = x.uc[3];
    y.uc[1] = x.uc[2];
    y.uc[2] = x.uc[1];
    y.uc[3] = x.uc[0];
    return y.ul;
}
4

2 回答 2

5

htonl 有时被定义为 gcc 标准包含文件中的宏。使用不同的名称。

于 2013-06-07T03:07:11.343 回答
1

为了确保例程实际上是 a function,而不是 a macro(例如,某些标准库例程putchar通常是),您可以#undef像这样使用:

#undef htonl
unsigned long htonl(unsigned long ll) 
{
    UDWord x;
    UDWord y;

    x.ul = ll;
    y.uc[0] = x.uc[3];
    y.uc[1] = x.uc[2];
    y.uc[2] = x.uc[1];
    y.uc[3] = x.uc[0];
    return y.ul;
}
于 2013-06-07T03:33:31.687 回答