_POSIX_与_POSIX_SOURCE与_POSIX_C_SOURCE

时间:2019-02-11 08:12:58

标签: c posix

(从this question拆分)

以下3个宏出现在许多C源文件中,这些文件试图检测/依靠POSIX功能的可用性:

  • _POSIX_SOURCE
  • _POSIX_C_SOURCE
  • _POSIX_(和_POSIX吗?)

在链接到的问题中,解释了我们应该将_POSIX_C_SOURCE设置为我们要依赖的POSIX版本(尽管设置并不能保证该功能实际上 be 可用-取决于编译器/操作系统)。另外,虽然我可以将其设置为 user ,但尚不清楚何时 others 自行设置它(例如,编译器/构建系统)。对于其他两个,我既不知道何时设置它们,也不知道何时设置它们。

那么,这三个宏之间的含义有何不同?他们什么时候会为我准备?以及为什么/何时应该选择其中一个设置为其他设置?

1 个答案:

答案 0 :(得分:1)

非常部分的答案(并感谢@SomeProgrammerDude):


POSIX reference告诉我们:

  

POSIX.1-1990标准指定了一个名为_POSIX_SOURCE的宏。 _POSIX_C_SOURCE已取代。

实际上是GNU C库手册tells,例如:

  

如果将宏_POSIX_C_SOURCE定义为正整数,则_POSIX_SOURCE的状态无关紧要。

,对于其他C标准库实现,它应该相同。因此-切勿自己使用{ "bool": { "must_not": [{ "nested": { "path": "fixed_fields", "filter": { "term": { "fixed_fields.id": 38 } } } }] } } ,而只能使用<div class="container-fluid"> <div class="row no-gutter"> <div class="col-lg-12 no-space"> <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> <div class="col-lg-4"> <a class="navbar-brand white">LifeShot</a> </div> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation" > <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNavDropdown"> <div class="col-lg-4"> <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" /> </div> <div class="col-lg-4"> <i class="fa fa-user-o fa-lg white" aria-hidden="true"></i> </div> </div> </nav> </div> </div> </div> (除非您使用的旧平台至少在过去20年中其操作系统和库没有更新)。


_POSIX_SOURCE_POSIX_C_SOURCE是Microsoft-Visual-C(++)特定的宏。我猜测,您定义它的目的是使MSVC公开类似POSIX / POSIX的功能。根据MinGW邮件列表上的this non-authoritative thread,从MSVC2013开始,MSVC不再使用_POSIX_(和_POSIX?)。