wawxdyy 发表于 2009-04-27 18:45

htonll/ntohll未定义

因为要传输的数据中有一个字段64-bit的地址,所以想到用htonll/ntohll解决字节序的问题,可是在编译的时候提示未定义,在头文件中我已经包含了netinet/in.h,所以不明白为什么还是赵不到


Undefined                     first referenced
symbol                           in file
htonll                              /var/tmp//ccwBQuXK.o
ntohll                              /var/tmp//ccwBQuXK.o
ld: fatal: Symbol referencing errors. No output written to 32/test_solaris
collect2: ld returned 1 exit status
gmake: *** Error 1


另外,我看到/usr/include/sys/byteorder.h有如下代码

65 #if !defined(_XPG4_2) || defined(__EXTENSIONS__)
66 #define ntohll(x)       (x)
67 #define htonll(x)       (x)
68 #endif/* !_XPG4_2 || __EXTENSIONS__ */


请问(X)就可以自动地转换字节序了吗?

lxyscls 发表于 2015-06-21 14:15

()当然不行

但是如果是大端系统的话,则不需要转,所以 = (x)

木刀客 发表于 2015-06-27 18:45

据说htonl/ntohl是转字内顺序的, 主要是unix和瘟毒死之间的转换(小机与页面)。
页: [1]
查看完整版本: htonll/ntohll未定义