Целые числа (из stdint.h) на самом деле типизируются для стандартных типов C. Таким образом, к ним также применяются «поощрения аргументов по умолчанию», которые применяются в переменных (varargs), таких как printf(), так что char и short передаются в int (подписанный или без знака).Целые числа и промо-роли в функциях varargs
Я пишу функцию, подобную printf, которая предназначена для целых чисел. Он имеет строку формата, которая имеет информацию о размере для всех целых чисел в списке аргументов переменных.
Как написать код запроса varargs, чтобы он извлекал каждый аргумент с правильным размером? Я полагаю, что моя функция должна быть осведомлена о продвижении аргументов по умолчанию, но они являются компиляторами/зависящими от системы, потому что это зависит от того, имеет ли система 16/32/64 бит int. Как я могу получить аргументы правильно, независимо от компилятора?
"Как я могу получить аргументы прямо, в компиляторе-независимым образом?" ну, иначе, чем из документации по платформе, которую вы предоставили. – Shark
Я не совсем уверен, в чем проблема - разве это не то, что означает 'va_arg'? –
В чем проблема при использовании 'va_arg'? –