Да, синтаксис правильный (по крайней мере, для C99). Похоже, ваш компилятор не настроен на его обработку. Просто возьмите z
и у вас все будет хорошо. Чтобы быть правильным, убедитесь, что ваши спецификаторы формата printf
соответствуют размеру типов. Включение всех предупреждений, которые ваш компилятор выдаст вам, вероятно, поможет в этом отношении.
Ваша цитата:
Для его печати следует использовать префикс z, поскольку фактический размер может отличаться в зависимости от архитектуры
относится к тому факту, что size_t
(это тип, возвращаемый оператором sizeof
), может варьироваться от архитектуры к архитектуре. z
предназначен для того, чтобы сделать ваш код более переносимым. Однако, если ваш компилятор не поддерживает его, это не сработает. Просто поиграйте с комбинациями %u
, %lu
и т. Д., Пока не получите разумный вывод.