标志“-D_POSIX_C_SOURCE = 200112L”是什么意思?

时间:2013-09-22 20:55:02

标签: c compiler-flags

没有它,我无法使用连接到互联网所需的库,但我不知道这意味着什么:

-D_POSIX_C_SOURCE=200112L

任何人都可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

随着时间的推移,POSIX已经进行了多次修订。每个新版本都更改了它支持的功能集。

此宏定义了您希望构建程序的功能集。它会影响包含文件的预处理方式,从而产生不同的函数原型。例如,某些库将在编译时检查POSIX_C_SOURCE级别以确定是否可以使用线程。库可以使用此定义来确定某些POSIX函数是否可供使用,或者是否必须提供自己的实现。

根据维基百科(https://en.wikipedia.org/wiki/POSIX),POSIX 2001等同于单一UNIX规范版本3.也许您在原始帖子中提到的版本是第一个定义所需网络功能的版本。 listen()和bind()等函数在本标准中明确指定,而粗略搜索在之前的POSIX版本中没有提及它们。

如果未指定POSIX_C_SOURCE,您链接的库将对可用功能集做出一些假设,或者可能会抱怨它没有定义并放弃。也许您可能在需要正确设置此变量的库中进行链接?