Estoy tratando de deshacerme de una advertencia falsa en mi programa. Bajo Windows 64 (en Linux no existe tal aviso) esta declaración:printf y% llx en GCC en Windows 64x
printf("%llu",UINT64_MAX);
genera la advertencia siguiente:
warning: unknown conversion type character 'l' in format [-Wformat]|
La salida parece ser correcta y la advertencia no debería estar ahí. La publicación más relevante relacionada con gcc que puedo encontrar es este informe de error de 2008 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37768
Si entiendo correctamente de acuerdo con eso, esta advertencia se debe al hecho de que bajo el capó gcc llama a MSVC printf que no cumple con C99 y puede No entiendo el formato largo sin firmar en printf. Desde la misma página, la solución sugerida es usar algo llamado gnu_printf. Intenté googlearlo, pero no encontré un encabezado para incluir.
Entonces, la pregunta es ¿cómo se debe manejar esto para ser portátil? Solo quiero deshacerme de la advertencia de una manera correcta y no descuidada.
Obtengo la advertencia de todos modos también usando PRIu64/PRId64 y similar ... esto es porque la sintaxis que escribió no es compatible con C++ 11 – gabry
si siente que tiene una solución que no está cubierta en otra respuesta, se recomienda publica una respuesta. Por favor, no edite la pregunta para incluir la respuesta. He retrocedido tu edición. – bolov