_POSIX_ против _POSIX_SOURCE против _POSIX_C_SOURCE - PullRequest
0 голосов
/ 11 февраля 2019

(отделите это от этот вопрос )

Следующие 3 макроса появляются во многих исходных файлах C, которые пытаются обнаружить / полагаться на доступность POSIX функциональность:

  • _POSIX_SOURCE
  • _POSIX_C_SOURCE
  • _POSIX__POSIX?)

В связанном с этим вопросе объясняется, что мы должны установить _POSIX_C_SOURCE на версию POSIX, на которую мы хотим положиться (хотя ее установка не гарантирует, что функциональность на самом деле будет доступно - это зависит от компилятора / ОС).Кроме того, хотя я могу установить его как пользователь , неясно, когда другие установят его самостоятельно (например, система компилятор / сборка).Что касается двух других, я не знаю ни когда я должен их устанавливать, ни когда другие устанавливают их.

Итак, в чем разница в значениях между этими тремя макросами?Когда каждый из них будет установлен для меня?И почему / когда я должен выбрать один из них поверх других, если вообще?

1 Ответ

0 голосов
/ 11 февраля 2019

Очень частичный ответ (и благодаря @SomeProgrammerDude):


Ссылка POSIX говорит нам, что:

POSIX.1Стандарт -1990 определил макрос с именем _POSIX_SOURCE.Это было заменено _POSIX_C_SOURCE.

, а в практическом плане руководство по библиотеке GNU C сообщает us, например:

Состояние_POSIX_SOURCE не имеет значения, если вы определяете макрос _POSIX_C_SOURCE для положительного целого числа.

и, вероятно, оно должно быть таким же для других реализаций стандартной библиотеки Си.Поэтому - никогда не используйте _POSIX_SOURCE самостоятельно, используйте только _POSIX_C_SOURCE (кроме случаев, когда вы работаете на старых платформах, где ОС и библиотеки не обновлялись по крайней мере в течение последних 20 лет).


_POSIX_ и _POSIX - это макрос для Microsoft-Visual-C (++).Я догадываюсь вы определяете это, чтобы MSVC открывал POSIX / POSIX-подобные функциональные возможности.Согласно этой неавторизованной теме в списке рассылки MinGW, MSVC больше не использует _POSIX__POSIX?) С MSVC2013.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...