Пытаюсь избавиться от предупреждения о повышении c ++
Вопрос
Всякий раз, когда я включаю boost в свой проект, я получаю миллион таких предупреждений.Кто-нибудь знает, как я могу избавиться от предупреждений?
../зависит от\boost/config/abi_prefix.hpp(19) :предупреждение C4103:'зависит от\boost\config\abi_prefix.hpp' :выравнивание изменено после включения заголовок, возможно, из-за отсутствия #pragma пакет (pop)
Я знаю, что могу использовать #pragma, чтобы отключить предупреждение, но я хотел бы знать причину этих предупреждений.
Решение
Причина в том, что boost не помещает эти прагмы в каждый файл, который нуждается в упаковке данных.Они #включают отдельный файл, который выполняет нажатие (abi_prefix.hpp), а затем другой (abo_suffix.hp), после чего выполняется всплывающее окно.
Это позволяет им повторно использовать один и тот же код #pragma pack везде, что удобно, поскольку в разных компиляторах он может различаться.
Но это совершенно безопасно.За нажатием #pragma следует всплывающее окно, оно просто включено из другого файла.Поэтому вам, вероятно, следует просто отключить эту ошибку.
Другие советы
Да, вы получили бы это из директивы #pragma pack в config/abi/msvc_prefix.hpp .Это указывает на то, что упаковка вашего проекта по умолчанию не равна 8.Это довольно необычно, это сделано намеренно?Ошибки, связанные с различиями в упаковке, может быть немного сложно диагностировать.
Я нашел способ избавиться от этого предупреждения.
Вам нужно отредактировать файл boost_1_**\boost\config\user.hpp и раскомментировать строку BOOST_DISABLE_ABI_HEADERS
Итак, вы должны определить в этом файле:
#define BOOST_DISABLE_ABI_HEADERS
Как только это будет сделано, просто стройте с помощью bjam, как вы обычно это делаете.
Пожалуйста, ознакомьтесь с комментариями ниже об опасностях этого решения