小编Bal*_*zar的帖子

运行boost bcp工具时出错:"Boost路径似乎设置错误"

试图运行Boost的bcp工具,我收到以下错误:

**** exception(205): std::runtime_error: The Boost path appears to have been incorrectly set: could not find boost/version.hpp in 
******** errors detected; see standard output for details ********
Run Code Online (Sandbox Code Playgroud)

错误消息与上面完全相同,其尝试搜索的路径为空.我尝试通过设置BOOST_ROOT环境变量来解决它,但是同样的错误又回来了,搜索到的路径仍然是空的.该系统是Mac OS X 10.9.1.

c++ boost

7
推荐指数
1
解决办法
1448
查看次数

可以递归地解析va_list中的args吗?

假设我想通过让函数的每次调用读取下一个参数来制作一个递归解析可变参数列表的函数?将va_list交给下一个函数后,我不打算继续在调用函数中使用va_list。是否可以使用以下代码:

void VarArgRecursive( va_list args ) {
    int nextArg = va_arg(args, int);
    if( nextArg != -1 ) {
        printf("Next arg %d\n", nextArg);
        VarArgRecursive(args);
    }
}

void VarArgFunc( int firstArg, ... ) {
    va_list args;
    va_start(args, firstArg);
    VarArgRecursive(args);
    va_end(args);
}

int main (int argc, char * const argv[]) {

    VarArgFunc(20, 12, 13, -1);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该代码在我的系统上编译,并且输出符合预期:

Next arg 12
Next arg 13
Run Code Online (Sandbox Code Playgroud)

那么,这种做法可以吗?我搜索了列表,发现将va_list移交给下一个函数后,调用函数中va_list的内容未定义。这对我的用法无关紧要,因为在将va_list移交给下一个(实际上是相同的)函数之后,我将不再继续使用它。我还检查了此页面:

http://c-faq.com/varargs/handoff.html

...这表明我将va_list移交给下一个函数的方式是可以的。它没有说的是,在读取一个arg之后是否可以将va_list交给另一个函数,并期望被调用的函数读取下一个arg。如果对此问题有特定于c ++的答案,那也是可以的,因为它将在c ++程序中使用。

c++ variadic-functions

5
推荐指数
1
解决办法
1629
查看次数

标签 统计

c++ ×2

boost ×1

variadic-functions ×1