小编Pio*_*ost的帖子

在Eclipse中引入git存储库时,"无法获得广告Ref for branch ..."错误

当试图在Eclipse中的git存储库中拉(Team | Pull从上下文菜单中)时,我得到Could not get advertised Ref for branch refs/heads/develop错误.我想这是因为develop在此期间删除了名为的远程分支.Branch develop目前已签出.

如何解决这个问题?
我可以配置git和/或Eclipse,以便下次删除某个其他远程分支时不会出现此错误吗?

eclipse git

4
推荐指数
2
解决办法
2万
查看次数

如何在全局中捕获bash中的on_error?

似乎on_errorBash中的陷阱仅在其定义的函数范围内起作用.例如,运行此脚本

#!/bin/bash

on_error() {
    echo 'on_error'
}

f() {
    false
    echo 'function f'
}

g() {
    trap on_error ERR
    echo 'function g'
    false
    f
}

g
Run Code Online (Sandbox Code Playgroud)

生产:

function g
on_error
function f
Run Code Online (Sandbox Code Playgroud)

有没有办法on_error全局陷阱,这样我就不必分别将它捕获到每个函数中?

linux error-handling bash shell bash-trap

4
推荐指数
1
解决办法
632
查看次数

提升lambda迷惑

为什么回调只调用一次?

bool callback()
{
    static bool res = false;
    res = !res;
    return res;
}

int main(int argc, char* argv[])
{
    vector<int> x(10);

    bool result=false;
    for_each(x.begin(),x.end(),var(result)=var(result)||bind(callback));

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

c++ boost-bind boost-lambda

3
推荐指数
1
解决办法
401
查看次数

提升lambda集合大小评估

我有一个形式的功能:

void DoSomething(const boost::function<bool ()>& condition, other stuff);
Run Code Online (Sandbox Code Playgroud)

此函数执行一些工作,仅在条件为真时返回.这个条件已被表达为仿函数参数,因为我想在不同的呼叫站点提供不同的条件.

现在,直接使用它是相当简单的,但它需要声明许多小的一次性函数或函子对象,如果可能的话我想避免使用它们.我一直在关注Boost的lambda库,以寻找可能的方法来消除这些,但我认为我缺少一些基本的东西; 我无法让它做我想做的事.

有一个案子让我感到难过:我有一个std::vector叫做的集合data; 我所追求的条件是当该size()集合达到某个阈值时.从本质上讲,我希望我的condition仿函数在返回时返回true data.size() >= threshold,否则返回false.但是我一直在用lambda语法表达这个问题.

到目前为止我能够提出的最好的(至少编译,但它不起作用)是这样的:

boost::function<bool (size_t)> ge = boost::bind(std::greater_equal<size_t>(),
                                                _1, threshold);
boost::function<size_t ()> size = boost::bind(&std::vector<std::string>::size,
                                              data);
DoSomething(boost::lambda::bind(ge, boost::lambda::bind(size)), other stuff);
Run Code Online (Sandbox Code Playgroud)

在进入时DoSomething,大小为0 - 即使在运行过程中大小增加,调用condition()总是看起来大小为0.追踪它(通过Boost的内部结构有点棘手),而它似乎greater_equal每次condition()评估都会调用它,它似乎没有调用size().

那么我完全搞砸了什么基本的东西?是否有更简单的方式来表达这种事情(同时仍然保持代码尽可能内联)?

理想情况下,我希望尽可能接近C#等效代码流畅度:

DoSomething(delegate() { return data.size() >= threshold; }, other stuff);
DoSomething(() => (data.size() >= threshold), other stuff);
Run Code Online (Sandbox Code Playgroud)

c++ functor boost-lambda boost-functional

3
推荐指数
1
解决办法
334
查看次数

使用bjam构建基本的Boost应用程序

我可以在Boost.Build上找到大量的通用文档,但令人惊讶的是如何使用它来构建简单的Boost应用程序.

我用bjam编译了Boost for mingw,得到了所有库并包含在C:\ Boost中.现在,基本的Jamroot文件会是什么样的呢?

libs都有复杂的名字,比如'libboost_filesystem-mgw34-mt-s.lib',我确信某处有某种魔术开关可以说'链接libboost_filesystem'!

boost-build bjam

3
推荐指数
1
解决办法
6575
查看次数

什么是使用boost :: program_options的首选跨平台"主要"定义?

我正在尝试使用C++和boost开发一个跨平台的应用程序.

我通常在*nix环境中编程,我总是在其中定义'main',如下所示:

int main( const int argc, const char* argv[] )
{
...
}
Run Code Online (Sandbox Code Playgroud)

对于这个应用程序,我使用Visual Studio 2003在Windows环境中启动.

当我尝试使用带有此定义的boost :: program_options时,我从program_options :: store获得编译错误:

po::options_description desc("Supported options");
desc.add_options()...;
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
Run Code Online (Sandbox Code Playgroud)

错误:

main.cpp(46) : error C2665: 'boost::program_options::store' : none of the 2 overloads can convert parameter 1 from type 'boost::program_options::basic_parsed_options<charT>'
    with
    [
        charT=const char
    ]
    c:\boost_1_38_0\boost\program_options\variables_map.hpp(34): could be 'void boost::program_options::store(const boost::program_options::basic_parsed_options<charT> &,boost::program_options::variables_map &,bool)'
    with
    [
        charT=char
    ]
    c:\boost_1_38_0\boost\program_options\variables_map.hpp(43): or       'void boost::program_options::store(const boost::program_options::basic_parsed_options<wchar_t> &,boost::program_options::variables_map &)'
    while trying to match the …
Run Code Online (Sandbox Code Playgroud)

c++ portability visual-studio boost-program-options

3
推荐指数
1
解决办法
2013
查看次数

如何获取Yahoo Pipes中的当前日期和时间?

有没有办法在Yahoo Pipes中获取当前日期和时间?

我需要这个来创建一个只有来自SO的最新问题的管道,因为我不想等待SO团队为此实现RSS ...

datetime yahoo-pipes

3
推荐指数
1
解决办法
2982
查看次数

如何设计面向非阻塞I/O的状态机?

我正在使用Qt框架,该框架默认具有非阻塞I/O,用于开发浏览多个网页(在线商店)并在这些页面上执行不同操作的应用程序.我正在将特定网页"映射"到我用来浏览此页面的状态机.
这个状态机有这些转换;
Connect, LogIn, Query, LogOut, Disconnect
和这些国家;
Start, Connecting, Connected, LoggingIn, LoggedIn, Querying, QueryDone, LoggingOut, LoggedOut, Disconnecting, Disconnected
从*ing到*ed states(Connecting->Connected)的转换是由于LoadFinished当前请求的url被加载时从网络对象接收的异步网络事件.从*ed到*ing states(Connected->LoggingIn)的转换是由我发送的事件引起的.
我希望能够向该机器发送多个事件(命令)(如Connect,LogIn,Query("productA"),Query("productB"),LogOut,LogIn,Query("productC"),LogOut,Disconnect)立刻让它处理它们.我不想阻止等待机器完成处理我发送给它的所有事件.问题是它们必须与上述网络事件交错,通知机器有关正在下载的URL.没有交错机器无法推进其状态(并处理我的事件),因为只有在接收到网络类型的事件后才会从*ing前进到*ed.

我怎样才能实现我的设计目标?

编辑

  1. 我正在使用的状态机有自己的事件循环,并且事件没有在其中排队,因此当机器忙时,机器可能会错过它们.
  2. 网络I/O事件不直接发布到状态机和我正在使用的事件队列.它们被发布到我的代码(处理程序),我必须处理它们.我可以按照自己的意愿转发它们,但请注意不要.1.
  3. 看看我的回答这个问题,我描述了我目前的设计中的细节.问题是我是否以及如何通过制作来改进这种设计

    • 更强大
    • 更简单

c++ events qt state-machine qstatemachine

3
推荐指数
1
解决办法
3130
查看次数

子进程完成运行后,如何获取其环境变量?

我正在寻找一种执行此操作的方法,以便可以将其传递到另一个子流程的环境中。

python subprocess environment-variables

3
推荐指数
1
解决办法
3707
查看次数

为什么批处理文件中的延迟扩展在这种情况下不起作用?

这段代码

@echo off
setlocal EnableDelayedExpansion

set myvar=first
set first=second

echo myvar:!myvar!
set myvar=!myvar!
echo myvar:!myvar!
Run Code Online (Sandbox Code Playgroud)

myvar:first
myvar:first
Run Code Online (Sandbox Code Playgroud)

在Windows Vista SP2上.

我预期的输出是

myvar:first
myvar:second
Run Code Online (Sandbox Code Playgroud)

为什么差异以及如何获得理想的效果?

windows batch-file

3
推荐指数
1
解决办法
6278
查看次数