Я пытаюсь избавиться от ложного предупреждения в своей программе. В Windows 64 (под Linux не существует такого предупреждения):
printf("%llu",UINT64_MAX);
генерирует следующее предупреждение:
warning: unknown conversion type character 'l' in format [-Wformat]|
Выход кажется правильным, и предупреждения не должно быть. Наиболее актуальная запись, связанная с gcc, которую я могу найти, - это отчет об ошибке от 2008 года http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37768
Если я правильно понимаю, это предупреждение проистекает из того факта, что под капотом gcc вызывает MSVC printf, который не совместим с C99 и не может понять формат unsigned long long в printf. На той же странице предлагается использовать то, что называется gnu_printf. Я пытался Google, но я не нашел заголовок для включения.
Итак, вопрос в том, как это следует обрабатывать, чтобы быть переносимым? Я просто хочу избавиться от предупреждения правильным и небрежным способом.
EDIT: Для тех, кто смотрит на вопрос в будущем, благодаря ссылке, предоставленной поставщиком, переносимым ответом будет использование файла заголовка inttypes.h.
Подробнее об этом:
en.wikipedia.org/wiki/C_data_types
И правильный способ вызова printf будет:
printf("%"PRIu64"",UINT64_MAX);