Включая два заголовка, которые недоступны одновременно

#c #boost

#c #повышение

Вопрос:

Существует репозиторий кода, включающий эти два заголовка из библиотеки Boost одновременно:

 #include <boost/nowide/cstdio.hpp> // => Not found with Boost 1_72_0
#include <boost/detail/endian.hpp> // => Not found with Boost 1_74_0 or 1_73_0
  

Сначала я установил Boost 1_74_0 или 1_73_0 и <boost/detail/endian.hpp> не был найден. Согласно этому сообщению, я установил Boost 1_72_0 , проблема была решена, но теперь <boost/nowide/cstdio.hpp> не найдена!

Я пытаюсь выяснить, какую версию Boost использовать, чтобы иметь оба заголовка. Я чувствую, что что-то упускаю, я ценю любую помощь =)

РЕШЕНИЕ

Используя Boost 1_74_0 и:

  • Заменить #include <boost/detail/endian.hpp> на #include <boost/predef/other/endian.h>
  • Заменить #ifndef BOOST_LITTLE_ENDIAN на #if BOOST_ENDIAN_BIG_BYTE
  • Заменить #ifdef BOOST_LITTLE_ENDIAN на #if BOOST_ENDIAN_LITTLE_BYTE

Комментарии:

1. Не уверен, но boost/detail/endian.hpp не выглядит как общедоступный заголовок. Почему вы это включаете?

2. Может быть, вашей библиотеке требуется Boost 1_73_0?

3. @rustyx Boost 1_73_0 не может найти boost/detail/endian.hpp

Ответ №1:

Если вы прочитали файл <boost/detail/endian.hpp> заголовка, в нем есть комментарий:

// Use the Predef library for the detection of endianess.

За которым следует

 #include <boost/predef/detail/endian_compat.h>
  

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

Таким образом, решение заключается в переходе на библиотеку Predef и ее заголовки.


Что касается <boost/nowide/cstdio.hpp> его части библиотеки Nowide, которая была добавлена с Boost 1.73.0.