C语言变长参数及其陷阱( 二 )

  • 不知道参数的数量:在 printInts() 的情况下 , 你必须信任调用者作为第一个参数传递正确数量的参数 。在 debugOut() 的情况下,你必须信任调用者在字符数组后传递的参数数量与字符数组中的格式化代码数量相同 。
  • 不知道参数的类型:va_arg() 接受一个类型,用它来解释其当前位置的值 。然而,你可以告诉 va_arg() 将值解释为任何类型 。它无法验证正确的类型 。
  • 警告:避免使用 C 风格的变长参数列表 。建议传递一个 std::array 或 vector 的值、使用初始化列表,或者使用类型安全的变参模板来实现变长参数列表 。

    【C语言变长参数及其陷阱】


    推荐阅读