gpt4 book ai didi

c - getnameinfo 的签名在 glibc 版本之间发生变化,我该如何匹配它?

转载 作者:IT王子 更新时间:2023-10-29 00:36:08 24 4
gpt4 key购买 nike

我需要匹配调用 getnameinfo 的签名所以我可以围绕那个调用写一个包装器。不幸的是,主机之间的签名会发生变化。

在我尝试在最新的 CentOS 6.3 上进行编译之前,事情一直在进行中,但出现了错误:

error: conflicting types for 'getnameinfo' 

嗯?

事实证明,最后一个参数 flags 在 CentOS (glibc-headers-2.12-1.80) 上被列为一个 unsigned int,但在 Fedora (glibc-headers-2.15-58) 上只是一个 int。 (请注意,两个主机上的手册页都说它应该是一个整数。)

extern int getnameinfo ( /*cut*/, unsigned int __flags);

对比

extern int getnameinfo ( /*cut*/, int __flags);

一些搜索让我相信the standard has changed the type标志参数。

看来我需要更改函数中的标志类型以匹配主机的定义。处理这个问题的最佳方法是什么?这是一个 autoconf 类型的问题还是有一些更简单的解决方案?我希望编译器 (gcc) 有一些我可以利用的宏,但我找不到任何东西。

最佳答案

您可以检查 features.h 中定义的 __GLIBC_MINOR__ 宏并相应地传递参数,例如:

#include <features.h>

#if __GLIBC_MINOR__ > 12
getnameinfo(..., flags);
#else
getnameinfo(..., (unsigned) flags);
#endif

关于c - getnameinfo 的签名在 glibc 版本之间发生变化,我该如何匹配它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14902553/

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