В C мы можем иметь VARIADIC функции, такие как:Возможно передать аргументы, введенные во время выполнения?
void abc(int x, ..)
{
}
, и мы можем назвать их с переменным числом аргументов, как:
abc(1,2,3) or abc(1,2,3,4,5)
Но в обоих приведенных выше вызовов функций, мы назвали вариационную функцию abc
с уже известными нами параметрами; «1, 2, 3» в первом случае и «1, 2, 3, 4, 5» во втором случае.
Мой вопрос:
Есть ли способ вызвать VARIADIC функцию с переменным числом аргументов, введенных пользователем во время выполнения?
Например, в main()
я попросить пользователя ввести определенное количество входов, а затем передать эти входы в VARIADIC функции с помощью параметров p1, p2, p3 и так далее ...
Это звучит как очередной поиск ненужного сложного решения, чтобы усложнить ситуацию. Вам даже не нужно использовать va_lists когда-либо в программе на C, они являются излишней особенностью языка. – Lundin
@ Lundin Я нахожу 'printf' довольно изящным. Я могу представить, что есть другие случаи, когда переменные списки аргументов полезны, хотя и не являются строго необходимыми. –
@ KlasLindbäck Хотя функции printf/scanf являются мощными, они также невероятно сложны, медленны, неэффективны и очень небезопасны (нет безопасности типов, возможных переполнений буфера и т. Д.). Кроме того, они синтаксически отклоняются от остальной части языка. Лично я думаю, что они довольно ужасные. Независимо от того, что вы думаете об этих функциях, программисту не нужно создавать собственные функции printf, поэтому va_lists совершенно излишни. – Lundin