В настоящее время в моем macOS CI я получаю ошибка uint64 должна рассматриваться как unsigned long long
format specifies type 'unsigned long' but the argument has type 'uint64' (aka 'unsigned long long')
тогда как в моих Ubuntu 18.04 и 20.04 CI я получаю сообщение об ошибке uint64 следует рассматривать как unsigned long
format specifies type 'unsigned long long' but the argument has type 'uint64' (aka 'unsigned long')
Переключение между %lu и %llu в моем оператор печати исправит его для одного из них и, конечно же, сломает его для другого.
LOG_DEBUG("sql.sql", "SmartScript::ProcessAction: SMART_ACTION_SET_INST_DATA64: Field: %u, data: %lu",
e.action.setInstanceData64.field, targets->front()->GetGUID().GetRawValue());
Как это может быть и как я могу решить эту проблему?
#declare
? - person Alberto Sinigaglia   schedule 21.06.2021LOG_DEBUG
не поддерживает спецификаторы формата<inttypes>
? Однако, вероятно, да, поскольку они обычно выражаются в виде макросов, которые просто заменяют строковые литералы. - person Adrian Mole   schedule 21.06.2021PRu64
, как указано в верхнем / принятом ответе. Но является ли это действительным C++ (это формально в стандарте C99). Это именно то, для чего были разработаны эти материалы форматаPRxxx
. - person Adrian Mole   schedule 21.06.2021