(从this question拆分)
以下3个宏出现在许多C源文件中,这些文件试图检测/依靠POSIX功能的可用性:
_POSIX_SOURCE
_POSIX_C_SOURCE
_POSIX_
(和_POSIX
吗?)在链接到的问题中,解释了我们应该将_POSIX_C_SOURCE
设置为我们要依赖的POSIX版本(尽管设置并不能保证该功能实际上 be 可用-取决于编译器/操作系统)。另外,虽然我可以将其设置为 user ,但尚不清楚何时 others 自行设置它(例如,编译器/构建系统)。对于其他两个,我既不知道何时设置它们,也不知道何时设置它们。
那么,这三个宏之间的含义有何不同?他们什么时候会为我准备?以及为什么/何时应该选择其中一个设置为其他设置?
答案 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
?)。