Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
812 views
in Technique[技术] by (71.8m points)

gcc - Count number of parameters in C variable argument method call

When using va_start(), va_arg() and va_end() to read parameters passed to a method, is there a way to count how many arguments there are?

According to the man page if you call va_arg() too many times you get "random errors":

If there is no next argument, or if type is not compatible with the type of the actual next argument (as promoted according to the default argument promotions), random errors will occur.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

No. a Variable Argument function (such as printf), must "know" when to stop looking for more arguments.

printf knows by the number of %d, %s and other symbols in its format string.

Other functions sometimes use Sentinel values:

sumValues(1, 3, 5, 7, 6, 9, -1); // will add numbers until it encounters a -1

Other functions may have the number of parameters stated up front:

AddNames(4, "Bill", "Alice", "Mike", "Tom");

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...