Difficulty: Easy
Correct Answer: Yes
Explanation:
Introduction / Context:
This question reiterates a foundational requirement for variadic functions in C: a last fixed (named) parameter must exist so va_start can compute where the unnamed arguments begin. Without it, the behavior is not defined by the standard.
Given Data / Assumptions:
Concept / Approach:
va_start(ap, last) uses last to determine the starting address of the variadic arguments. Consequently, a function prototype must include at least one named parameter before ... . The classic pattern is int printf(const char *fmt, ...).
Step-by-Step Solution:
Declare f(T last, ...);Inside f: va_list ap; va_start(ap, last);Iterate with va_arg until a known condition (count or format) ends processing.Call va_end(ap) prior to return.
Verification / Alternative check:
All standard variadic functions follow this model. Attempting to write f(...){ va_list ap; va_start(ap, ???); } is impossible in portable C because there is no last named parameter to supply.
Why Other Options Are Wrong:
“No” conflicts with stdarg.h semantics. Numeric width, floating-point, or stdio.h helpers do not change the rule.
Common Pitfalls:
Assuming a compiler extension permits f(...); even if an extension exists, it is nonportable and should be avoided for educational and interview contexts.
Final Answer:
Yes
Discussion & Comments