gpt4 book ai didi

posix - 我应该期望 POSIX 包含 getopt.h 吗?

转载 作者:行者123 更新时间:2023-12-02 00:24:22 26 4
gpt4 key购买 nike

根据this ,POSIX 库不包含 getopt.h。但是,我在 unistd.h 中找到了这个:

#ifdef  __USE_POSIX2
/* Get definitions and prototypes for functions to process the
arguments in ARGV (ARGC of them, minus the program name) for
options given in OPTS. */
# define __need_getopt
# include <getopt.h>
#endif

这是否意味着当您包含 unistd.h 时,会隐式包含 getopt.h ?我的意思是,上面的代码是我应该从 unistd 头文件的所有实现中得到的东西,还是只是我的特定版本中的东西?另外,__USE_POSIX2 宏是在 POSIX.2 及以后版本中定义的,还是仅适用于 POSIX.2?

最佳答案

__USE_POSIX2是glibc的实现细节;它对应于定义的 _POSIX_C_SOURCE >= 2_XOPEN_SOURCE。这些也由 _GNU_SOURCE 隐含,并且除非启用严格的 ANSI 模式,否则会隐式使用。您不应该直接定义 __USE_ 宏。

由于它对应于值>= 2,因此它确实适用于更高版本。请参阅feature_test_macros联机帮助页以获取更多详细信息。

或者,来自 features.h 中的注释(内部 header - 不直接包含 - 负责处理所有这些):

/* These are defined by the user (or the compiler)
to specify the desired environment:
...
_POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
if >=199309L, add IEEE Std 1003.1b-1993;
if >=199506L, add IEEE Std 1003.1c-1995;
if >=200112L, all of IEEE 1003.1-2004
if >=200809L, all of IEEE 1003.1-2008
_XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
Single Unix conformance is wanted, to 600 for the
sixth revision, to 700 for the seventh revision.

关于posix - 我应该期望 POSIX 包含 getopt.h 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com