c - C中奇怪的变量参数问题

标签 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)。

最佳答案

我认为问题在于您将 double 作为 3 而不是 3.0 发送。正常的 3 将被视为整数,但在 test 函数中,您检索的 double 在大多数平台上都大于 int,您可能最终读取错误的位置,进而导致生成 EXC_BAD_ACCESS 运行时信号

关于c - C中奇怪的变量参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10530945/

相关文章:

llvm - 我应该如何链接到 LLVM 库?

Javascript - [为什么?] 将变量分配给对象

创建结构参数

C While 循环无法正常运行

c - 下载 Rails - C 无法编译

variables - Makefile 中的 GNU make 变量

sql-server - 如何提示SQL查询用户输入信息

c++ - 当 -std=c++11 选项被删除时,clang++ 仅使用 boost::format 编译 C++11 程序

c++ - 在 clang 插件中,如何查看编译翻译单元是否出错?

c - char* 的可变二维数组作为 C 中的返回值