Странное поведение компилятора с PRIu64 в C ++ - PullRequest
0 голосов
/ 09 октября 2018

У меня есть некоторый код в моем файле c ++, который выглядит следующим образом:

#include <cinttypes>
....
LOG_INFO("%s duration: %" PRId64 "\n", tag.c_str(), timestamp);

И он может быть успешно скомпилирован с флагом -std=c++11.

Но он не скомпилирован надругая машина со следующей ошибкой:

base/utils.h:68:31: error: expected ‘)’ before ‘PRId64’

, если только я не добавлю флаг -D__STDC_FORMAT_MACROS.

На первой машине

gcc "4.8.5 20150623 (Red Hat 4.8.5-16)", 

на другой машине

gcc "4.8.5 20150623 (Red Hat 4.8.5-28)"

и использование

touch foo.h ; gcc -E -dM foo.h

дает тот же результат, что и макрос версии.

Я запутался, почему второй машине требуется -D__STDC_FORMAT_MACROS для компиляции PRId64?

...