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

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

-D_POSIX_C_SOURCE=200112L

谁有人解释一下?

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

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

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

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