C中奇怪的变量参数问题

时间:2012-05-10 09:17:24

标签: c variables clang

调用以下简化函数时,在最后一个语句中出现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)。

1 个答案:

答案 0 :(得分:4)

我认为问题出在double3而不是3.0。普通3将被视为整数,但在test函数中,您检索的是在大多数平台上大于int的双精度数,并且您可能最终会读取错误的位置生成EXC_BAD_ACCESS运行时信号