Если вы хотите написать функцию, которая принимает переменные параметры, ответ - да, и вот как вы объявляете такую функцию:
void myFunction(const char*, ...);
Обратите внимание на элипсис в конце.
Но теперь, когда вы знаете, как это сделать, я все усложню для вас. Вы не должны этого делать . myFunction()
, объявленный выше, небезопасен по типу и полностью обходит все средства, которые C ++ должен защитить от ошибок.
Существуют и другие способы достижения чего-то подобного (vector
приходит на ум), но я обнаружил, что если вам нужна функция, которая принимает переменные параметры, то это запах кода, который указывает, что что-то не так с Ваш дизайн в первую очередь. Посмотрите на почему вам это нужно.
EDIT:
Если то, что вы пытаетесь сделать, это не передавать переменные параметры как таковые, а отформатированную строку (как говорит ваш OP), тогда вам нужно будет выполнить форматирование строки самостоятельно в своей функции. Есть способы сделать это в зависимости от вашей платформы. В Windows вы, вероятно, использовали бы vsprintf()
или что-то подобное.
Но опять же, если вам нужно сделать это, есть лучшие способы. Лично мне нравится использовать Boost формат .