Que signifie l’indicateur “-D_POSIX_C_SOURCE = 200112L”?

Sans cela, je ne peux pas utiliser les bibliothèques nécessaires pour me connecter à Internet, mais je ne sais pas ce que cela signifie:

-D_POSIX_C_SOURCE=200112L

Quelqu’un peut-il expliquer?

POSIX a connu plusieurs révisions au fil du temps. Chaque nouvelle révision a modifié le jeu de fonctionnalités qu’elle supportait.

Cette macro définit l’ensemble des fonctionnalités avec lesquelles vous voulez que votre programme soit construit. Il influence la manière dont les fichiers d’inclusion sont prétraités, générant différents prototypes de fonctions. Par exemple, certaines bibliothèques vérifieront le niveau POSIX_C_SOURCE lors de la compilation pour déterminer si les threads peuvent être utilisés ou non. Les bibliothèques peuvent utiliser cette définition pour déterminer si certaines fonctions POSIX peuvent être utilisées ou si elles doivent fournir leur propre implémentation.

Selon Wikipedia ( https://en.wikipedia.org/wiki/POSIX ), POSIX 2001 équivaut à la version 3 de la spécification UNIX unique. Peut-être que la version que vous avez mentionnée dans votre message d’origine est la première à définir les fonctionnalités réseau dont vous avez besoin. Des fonctions telles que listen () et bind () sont définitivement spécifiées dans cette norme, tandis qu’une recherche sommaire n’en révèle aucune mention dans les versions précédentes de POSIX.

Si POSIX_C_SOURCE n’est pas spécifié, la bibliothèque à laquelle vous créez un lien émettra des hypothèses sur l’ensemble des fonctionnalités disponibles ou se plaindra de ne pas le définir et abandonnera. Peut-être pouvez-vous créer un lien dans une bibliothèque qui a besoin que cette variable soit correctement définie?