Пытаюсь избавиться от предупреждения о повышении c ++

StackOverflow https://stackoverflow.com/questions/403946

  •  03-07-2019
  •  | 
  •  

Вопрос

Всякий раз, когда я включаю 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, как вы обычно это делаете.

Пожалуйста, ознакомьтесь с комментариями ниже об опасностях этого решения

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top