getnameinfo的glibc版本之间的签名更改,我该如何匹配?
发布时间:2020-12-16 05:03:21 所属栏目:百科 来源:网络整理
导读:我需要匹配调用 getnameinfo的签名,这样我就可以围绕该调用编写一个包装器.不幸的是,签名在主机之间发生 事情正在发挥作用,直到我尝试编译最新的CentOS,6.3,这给出了错误: error: conflicting types for 'getnameinfo' 咦? 事实证明,最后一个参数flags在Ce
我需要匹配调用
getnameinfo的签名,这样我就可以围绕该调用编写一个包装器.不幸的是,签名在主机之间发生
事情正在发挥作用,直到我尝试编译最新的CentOS,6.3,这给出了错误: error: conflicting types for 'getnameinfo' 咦? 事实证明,最后一个参数flags在CentOS上被列为unsigned int(glibc-headers-2.12-1.80),但它只是Fedora上的一个int(glibc-headers-2.15-58). (请注意,两个主机上的手册页都说它应该是一个int.) extern int getnameinfo ( /*cut*/,unsigned int __flags); VS extern int getnameinfo ( /*cut*/,int __flags); 一些搜索让我相信the standard has changed the type的旗帜参数. 看起来我需要更改函数中的标志类型以匹配主机的定义. 解决方法
你可以检查在features.h中定义的__GLIBC_MINOR__宏并相应地传递参数,例如:
#include <features.h> #if __GLIBC_MINOR__ > 12 getnameinfo(...,flags); #else getnameinfo(...,(unsigned) flags); #endif (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |