Я работаю над проектом, и код содержит определение макроса:Что такое макрос __USE_MISC?
#define __USE_MISC
Код не используется, так что я думаю, что это какая-то другая цель.
Я работаю над проектом, и код содержит определение макроса:Что такое макрос __USE_MISC?
#define __USE_MISC
Код не используется, так что я думаю, что это какая-то другая цель.
__USE_MISC определяется в /usr/include/features.h
при условии:
#if defined _BSD_SOURCE || defined _SVID_SOURCE
# define __USE_MISC 1
#endif
__USE_MISC -> Define вещи, общие для BSD и System V Unix.
Так выглядит ваш код хочет, чтобы гарантировать, что он определен в любом случае, даже если оба _BSD_SOURCE
и _SVID_SOURCE
не определены (С Glibc 2.20, определение _DEFAULT_SOURCE
позволяет __USE_MISC
).
Для получения дополнительной информации см. feature test macros.
Кроме того, я предлагаю, чтобы OP выглядела так, чтобы убедиться, что среда сборки настроена правильно (и/или документирует требуемую конфигурацию), а не использует этот бэк-халк. –
Предполагается, что это означает, что для переключения какого-либо кода состояния. Например, такой код:
#ifdef __USE_MISC
DoSomething();
#endif
будет зависеть от вашего #define
. Если ваш код больше не ссылается на __USE_MISC
, то предположительно это рудиментарно.
__USE_MISC
- это внутренняя информация о том, как заголовки реализации обрабатывают «макросы проверки функций», которые направляют компилятор относительно того, какой набор стандартных функций должен быть доступен для сборки. Как указывает Thiruvalluvar's answer, он настроен (для внутреннего использования) заголовками библиотеки, если ваша сборка требует конфигурации _BSD_SOURCE
или _SVID_SOURCE
.
Ваш код/сборка не должен напрямую касаться этого макроса; вместо этого он должен использовать макросы с документализованными функциями. документы GLibC можно найти здесь: http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
Я оказался в ситуации, когда мне нужно было «-ansi -D_DEFAULT_SOURCE = __ STRICT_ANSI__', потому что' -ansi' оставил члены 'struct in6_addr' undefined. '-D_DEFAULT_SOURCE = __ STRICT_ANSI__' заработал' __USE_MISC'. Также см. ['Struct in6_addr' не имеет члена с именем 's6_addr32' с -ansi] (http://stackoverflow.com/a/36222072/608639). Он не чувствует себя комфортно, потому что мне никогда не приходилось это делать. – jww
Я нашел это в '' __USE_MISC Определить вещи, общие для BSD и System V Unix . Но я до сих пор не знаю, что именно. –
Bruce