Pregunta

Cada vez que incluyo un impulso en mi proyecto, recibo un millón de estas advertencias. ¿Alguien sabe cómo puedo deshacerme de las advertencias?

  

../depends\boost/config/abi_prefix.hpp(19)   : advertencia C4103:   'depende \ boost \ config \ abi_prefix.hpp'   : alineación cambiada después de incluir   encabezado, puede ser debido a falta de #pragma   paquete (pop)

Sé que puedo hacer un #pragma para deshabilitar la advertencia, pero me gustaría saber el motivo de estas advertencias.

¿Fue útil?

Solución

La razón es que boost no empuja / hace estallar estos pragmas en cada archivo que necesita que los datos se empaqueten. Ellos # incluyen un archivo separado que hace el envío (abi_prefix.hpp), y luego otro (abo_suffix.hp) después que hace el pop.

Eso les permite reutilizar el mismo código de #pragma pack en todas partes, lo que es útil ya que puede variar entre compiladores.

Aunque es perfectamente seguro. El empuje de #pragma es seguido por un pop, solo se incluye desde un archivo diferente. Así que probablemente deberías simplemente deshabilitar ese error.

Otros consejos

Sí, obtendrías eso de la directiva #pragma pack en config / abi / msvc_prefix.hpp. Indica que el paquete predeterminado de su proyecto no es 8. Eso es bastante inusual, ¿es intencional? Los errores debidos a las diferencias de empaquetamiento pueden ser un poco difíciles de diagnosticar.

Encontré una forma de deshacerme de esta advertencia.

Debe editar el archivo boost_1 _ ** \ boost \ config \ user.hpp y descomentar la línea con BOOST_DISABLE_ABI_HEADERS

Entonces deberías estar definiendo en este archivo:

#define BOOST_DISABLE_ABI_HEADERS

Una vez hecho esto, solo compile con bjam como lo haría normalmente .

Consulte los comentarios a continuación para conocer los peligros de esta solución

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top