Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ va_列表中的未知字符?_C++ - Fatal编程技术网

C++ va_列表中的未知字符?

C++ va_列表中的未知字符?,c++,C++,您从未使用NULL参数终止序列,while循环正在检查该参数 void add_s(const char* param, ...) { return s(param, NULL); } 现在只有两个出现。这是因为第一个字符串位于参数param中。 因此,您必须首先打印它,然后打印所有可选参数 可以使用宏来避免写入空终止符。比如: s("one", "two" , NULL ); 请注意,这至少需要一个参数。并考虑避免在严肃的代码中使用宏您从未使用NULL参数终止序列,while循环正

您从未使用NULL参数终止序列,while循环正在检查该参数

void add_s(const char* param, ...)
{
    return s(param, NULL);
}
现在只有两个出现。这是因为第一个字符串位于参数param中。 因此,您必须首先打印它,然后打印所有可选参数

可以使用宏来避免写入空终止符。比如:

s("one", "two" , NULL );

请注意,这至少需要一个参数。并考虑避免在严肃的代码中使用宏

您从未使用NULL参数终止序列,while循环正在检查这一点

void add_s(const char* param, ...)
{
    return s(param, NULL);
}
现在只有两个出现。这是因为第一个字符串位于参数param中。 因此,您必须首先打印它,然后打印所有可选参数

可以使用宏来避免写入空终止符。比如:

s("one", "two" , NULL );

请注意,这至少需要一个参数。并考虑避免在严肃的代码中使用宏

谢谢。有没有办法通过某种方式获取参数的数量来避免在末尾添加NULL?@Luka:如果末尾没有显式的终止参数,唯一剩下的选项是使用一个起始参数来描述循环中的其余参数。在这种情况下,启动参数可以是一个简单的计数器,例如:void sint numParams。。。然后s2,一,二;考虑一下避免在严肃的代码中使用宏为什么?@Luka:因为它们很容易被滥用和误用。另外,您使用的是C++,所以有更好的选项,比如可变格式模板是上帝发送的,但是VS2012不支持它们,如果我错了,我相信我是正确的。如果可能的话,最好避免新的语言特性,因为编译器编写者不会第一次使它们完美。有没有办法通过某种方式获取参数的数量来避免在末尾添加NULL?@Luka:如果末尾没有显式的终止参数,唯一剩下的选项是使用一个起始参数来描述循环中的其余参数。在这种情况下,启动参数可以是一个简单的计数器,例如:void sint numParams。。。然后s2,一,二;考虑一下避免在严肃的代码中使用宏为什么?@Luka:因为它们很容易被滥用和误用。另外,您使用的是C++,所以有更好的选项,比如可变格式模板是上帝发送的,但是VS2012不支持它们,如果我错了,我相信我是正确的。如果可能的话,最好避免新的语言特性,因为编译器编写者不会第一次获得它们。