Tratando de deshacerse de una advertencia de impulso de C ++
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.
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