(séparée de <a href="https://stackoverflow.com/q/48460942/1593077">cette question </a>)
Les 3 macros suivantes apparaissent dans de nombreux fichiers source C qui essaient de détecter/se fier à la disponibilité de POSIX fonctionnalité :
_POSIX_SOURCE
_POSIX_C_SOURCE
-
_POSIX_
(et_POSIX
?)
Dans la question en lien, il est expliqué que nous sommes censés définir _POSIX_C_SOURCE
à la version POSIX sur laquelle nous voulons nous appuyer (bien que l'établissement de ce paramètre ne garantisse pas que la fonctionnalité sera réellement être disponible - cela dépend du compilateur/OS). De plus, bien que je puisse le définir comme le utilisateur il n'est pas clair quand autres le définissent eux-mêmes (par exemple, le compilateur ou le système de construction). Pour les deux autres, je ne sais ni quand je dois les définir ni quand les autres les définissent.
Alors, quelle est la différence de signification entre les trois macros ? Quand chacune d'entre elles devrait-elle être définie pour moi ? Et pourquoi/quand devrais-je choisir de définir l'une d'entre elles plutôt que les autres, le cas échéant ?