gpt4 book ai didi

c - 我应该#include 什么来使用 'htonl' ?

转载 作者:太空狗 更新时间:2023-10-29 16:36:16 24 4
gpt4 key购买 nike

我想在我的 ruby​​ c 扩展中使用 htonl 函数,但不想使用它附带的任何其他互联网内容。 #include 中最简约但仍可移植的文件是什么?查看我计算机上的头文件,我可以看到 machine/endian.hsys/_endian.h 可以让我使用它们,尽管我不确定如果这是个好主意。

最佳答案

standard header 是:

#include <arpa/inet.h>

您不必担心该 header 中定义的其他内容。它不会影响您编译的代码,并且对编译时间的影响应该很小。

编辑:您可以对此进行测试。创建两个文件,htonl_manual.c

// non-portable, minimalistic header
#include <byteswap.h>
#include <stdio.h>
int main()
{
int x = 1;
x = __bswap_32(x);
printf("%d\n", x);
}

和 htonl_include.c:

// portable
#include <arpa/inet.h>
#include <stdio.h>
int main()
{
int x = 1;
x = htonl(x);
printf("%d\n", x);
}

在-O1处组装它们,然后取差:

gcc htonl_manual.c -o htonl_manual.s -S -O1
gcc htonl_include.c -o htonl_include.s -S -O1
diff htonl_include.s htonl_manual.s

对我来说,唯一的区别是文件名。

关于c - 我应该#include 什么来使用 'htonl' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3173648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com