-
C风格的变参函数
- void va_start(va_list argptr, lastparam);
- void va_end(va_list argptr);
- type va_arg(va_list argptr, type);
- void va_copy(va_list dest, va_list src);
- vsnprintf(const char* format, va_list ap);
-
宏定义变参函数的代码例子如下:
#include#include #include #include using namespace std; #define MAX_BUFF_LEN 1024 #define ET_OK 200 #define TEST_API(id, fmt, ...) do { test_api(id, fmt, ##__VA_ARGS__); } while (0) void test_api(int id, const char* fmt, ...) { char buff[MAX_BUFF_LEN] = {0}; va_list args; va_start(args, fmt); vsnprintf(buff , MAX_BUFF_LEN, fmt, args); va_end(args); cout << "id: " << id << "nfmt: " << fmt << "nbuff: " << buff << endl; } int main() { TEST_API(ET_OK, "num1:%d, num2:%d, num3:%d", 1, 2, 3); }