#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.