【发布时间】:2018-02-26 00:22:44
【问题描述】:
像数组一样读取 va_list 而不是使用 va_arg 函数是否是安全且已定义的行为?
前:
void func(int string_count, ...)
{
va_start(valist, string_count);
printf("First argument: %d\n", *((int*)valist));
printf("Second argument: %d\n", *(((int*)valist)+1));
va_end(valist);
}
同样的作业问题 例如:
void func(int string_count, ...)
{
va_start(valist, string_count);
printf("Third argument: %d\n", *(((int*)valist)+2));
*((int*)valist+2)=33;
printf("New third argument: %d\n", *(((int*)valist)+2));
va_end(valist);
}
PS:这似乎适用于 GCC
【问题讨论】:
标签: c arrays pointers variadic-functions undefined-behavior