Инструменты пользователя

Инструменты сайта


mingw_printf

Передача аргументов в функциях *printf()

В mingw 4.8.1 под Windows XP появились проблемы при передаче 64-битных чисел и строк в функции *printf()

Почитать: http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html

Решение: http://sourceforge.net/apps/trac/mingw-w64/wiki/gnu%20printf

Таким образом, по-умолчанию, mingw использует библиотеку MSVCRT.DLL для этих функций. В Windows XP она не соответствует стандарту, и даже не работает включение

#define __STDC_FORMAT_MACROS
#include <inttypes.h>

и применение макросов типа PRIX64. В Windows 7, видимо, проблему решили.

Чтобы всегда работали стандартные модификаторы типов (например, llx) в Windows, нужно:

  • либо явно использовать mingw-реализации этих функций, например, __mingw_printf(),
  • либо переключиться на все mingw-шные функции сразу:
#define __USE_MINGW_ANSI_STDIO 1
#include <stdio.h>
mingw_printf.txt · Последние изменения: 2014/04/26 19:47 (внешнее изменение)