可能重複:
C++ preprocessor __VA_ARGS__ number of arguments
How to count the number of arguments passed to a function that accepts a variable number of arguments?可變參數功能
要了解可變參數的功能,我寫了一個演示:
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
int foo(int n, int m, ...);
int
main (int argc, char *argv[])
{
int n = 10;
int m = 15;
int p = 20;
// foo (n, m);
foo (n, m, 20);
return EXIT_SUCCESS;
}
int foo (int n, int m, ...)
{
va_list ap;
int p;
char *str;
va_start (ap, m);
p = va_arg (ap, int);
n = m + p;
printf ("%d.\n", n);
va_end (ap);
return 0;
}
我想知道如何處理fu如果它只有2個參數。 (在該演示中,如果僅僅n
和m
,運行foo
後,我希望得到的結果:n = n+m
)
@RedX:該重複是可變宏,而不是可變參數函數。 – netcoder