Попытка избавиться от предупреждения повышения C ++ - PullRequest
5 голосов
/ 31 декабря 2008

Всякий раз, когда я включаю повышение в свой проект, я получаю миллион таких предупреждений. Кто-нибудь знает, как мне избавиться от предупреждений?

.. / зависит \ усиление / Config / abi_prefix.hpp (19) : предупреждение C4103: 'Зависит \ импульс \ Config \ abi_prefix.hpp' : выравнивание изменилось после включения заголовок, может быть из-за отсутствия #pragma упаковка (поп)

Я знаю, что могу сделать #pragma, чтобы отключить предупреждение, но я хотел бы знать причину этих предупреждений.

Ответы [ 3 ]

6 голосов
/ 31 декабря 2008

Причина в том, что boost не выдвигает / вставляет эти прагмы в каждый файл, для которого необходимо упаковать данные. Они #include отдельный файл, который выполняет push (abi_prefix.hpp), а затем еще один (abo_suffix.hp), который делает pop.

Это позволяет им везде использовать один и тот же код #pragma pack, что удобно, так как он может варьироваться в зависимости от компилятора.

Это совершенно безопасно, хотя. За нажатием #pragma следует pop, он просто включается из другого файла. Поэтому вам, вероятно, следует просто отключить эту ошибку.

2 голосов
/ 31 декабря 2008

Да, вы получите это из директивы #pragma pack в config / abi / msvc_prefix.hpp. Это указывает на то, что упаковка вашего проекта по умолчанию не 8. Это довольно необычно, это намеренно? Ошибки, связанные с различиями в упаковке, могут быть немного сложны для диагностики.

0 голосов
/ 04 января 2009

Я нашел способ избавиться от этого предупреждения.

Вам нужно отредактировать файл boost_1 _ ** \ boost \ config \ user.hpp и раскомментировать строку с помощью BOOST_DISABLE_ABI_HEADERS

Итак, вы должны определить в этом файле:

#define BOOST_DISABLE_ABI_HEADERS

Как только это будет сделано, просто соберите bjam, как обычно .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...