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库)标准,以便将来兼容.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...