没有它,我将无法使用连接到互联网所需的库,但我不知道这意味着什么:
-D_POSIX_C_SOURCE=200112L
谁能解释一下?
随着时间的推移,POSIX 经历了多次修订。每个新版本都更改了它支持的功能集。
该宏定义了您希望使用哪组功能来构建您的程序。它影响包含文件的预处理方式,从而产生不同的函数原型。例如,某些库将在编译时检查 POSIX_C_SOURCE 级别以确定是否可以使用线程。库可以使用此定义来确定某些 POSIX 函数是否可供使用,或者是否必须提供自己的实现。
根据 Wikipedia ( https://en.wikipedia.org/wiki/POSIX),POSIX 2001 相当于单一 UNIX 规范版本 3。也许您在原始文章中提到的版本是第一个定义您需要的网络功能的版本。像listen()和bind()这样的函数在这个标准中被明确指定,而粗略的搜索并没有显示出在以前的POSIX版本中对它们的任何提及。
如果未指定 POSIX_C_SOURCE,则您链接到的库将要么对可用功能集做出一些假设,要么可能会抱怨它未定义并放弃。也许您链接的库需要正确设置此变量?