微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

D_GNU_SOURCE的解释为什么要使用它以及何时使用?

我知道这是一个我们传递给函数的宏.你如何解释这个宏的用途,以及在哪种场景中我必须使用它?

解决方法

鉴于开发的应用程序符合 POSIX.1 – (IEEE 1003.1-2008,ISO / IEC 9945:2009)和/或 Single Unix Specification 2008(带有X / Open Curses的ISO / IEC 9945:2009),有助于确保应用程序的可移植性. _GNU_SOURCE很可能将源代码使用限制在GNU / Linux和GNU / Hurd系统中,除非进行额外的工作以解决此类功能在其他平台上的不可移植性.

一些公司和政府/军事合同可能需要使用某些平台标准.

如果您正在开发一个开源/自由软件应用程序,您希望在多个Unix和类Unix系统(包括可提供POSIX兼容性的Microsoft Windows NT,2000和更新版本)上使用,那么将开发限制为POSIX.1库函数使这个任务更容易.其他目标包括免费/开放BSD平台NetBSD,FreeBSD,OpenBSD,DragonflyBSD,以及不包含_GNU_SOURCE功能的商业Unix系统(Solaris,AIX,HP / UX等).

如果你使用便携式函数的改变功能,我想不出一个例子,但我相信它们确实存在,它可能会在非GNU平台中产生微妙的错误.

所以一般来说,如果您的开发已经锁定在GNU / Linux和GNU / Hurd中,那么可以随意使用这些扩展,但是对于可能部署在其他Unix和类Unix操作系统上的任何应用程序,请避免使用这些扩展.

我从一个已经从其他两个Unix平台移植到Linux的大型代码库上工作,我们确实使用了_GNU_SOURCE扩展,但大部分开发仅限于现代POSIX或IEEE 1003.1 / Single Unix Spec和C99(标准C库)标准,以便将来兼容.

原文地址:https://www.jb51.cc/c/116963.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐