调用以下简化函数时,我在最后一条语句中收到 EXC_BAD_ACCESS 错误:
void test(char *param, ...) {
va_list vl;
va_start(vl, param);
double a = va_arg(vl, double);
double b = va_arg(vl, double);
double *result = va_arg(vl, double*);
*result = a*b;
va_end(vl);
}
函数调用方式:
double result;
test("blub", 3, 3, &result);
我正在使用 Xcode 的 clang 编译器(Apple LLVM 编译器 3.1)。
最佳答案
我认为问题在于您将 double
作为 3
而不是 3.0
发送。正常的 3
将被视为整数,但在 test
函数中,您检索的 double 在大多数平台上都大于 int
,您可能最终读取错误的位置,进而导致生成 EXC_BAD_ACCESS
运行时信号
关于c - C中奇怪的变量参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10530945/