我目前正在尝试使用googletest与MinGW,-std=c++0x但它抱怨_stricmp is not declared in this scope当我不使用它时它不会-std=c++0x.我不知道是什么_stricmp,我刚刚发现它已定义cstring/string.h,所以为什么它在C++ 0x中消失了?
我目前正在用C++查看一些单元测试库,并有一些问题:
boost.test似乎没有模拟工具,但我很难想象在没有创建模拟对象/函数的情况下进行单元测试.你怎么在boost.test中做到这一点,你是手动做的(怎么样?我的意思是,有几种方法我可以想到,这些看起来都不好)或者你只是没有模拟对象吗?
googletest和googlemock看起来像mockingupport的好库,但它需要每个被模拟的对象都是虚拟的.我不是很喜欢这个,并不是我担心性能(我可以定义一个宏来解决它的生产代码)但是我觉得这非常具有侵入性.我想知道是否有另一种解决方案不需要对现有代码进行太多更改?(喜欢那里的clojure)
ZeroMQs Pub/Sub模式使服务器可以轻松回复正确的客户端.然而,如何处理无法在两个步骤中解决的通信,即不需要多个请求/回复对的协议,则不太明显.
例如,考虑一种情况,客户端是一个工作人员,要求服务器提供特定类型的新工作,服务器回复工作的参数,然后客户端发送结果,服务器检查这些并回复它们是否是正确.
显然,我不能只使用recv,send,recv,顺序发送并假设第一个和第二个recv来自同一个客户端.使用多个recv,发送对而不必处理来自其他客户端的消息的惯用方法是什么?
我找到了一本书,指出如果你想使用C标准库中的函数,它将函数指针作为参数(例如qsort),你想要传递函数指针的函数需要是一个C函数因此声明为extern"C".
例如
extern "C" {
int foo(void const* a, void const* b) {...}
}
...
qsort(some_array, some_num, some_size, &foo);
Run Code Online (Sandbox Code Playgroud)
如果这只是错误的信息,我不会感到惊讶,但是 - 我不确定,所以:这是正确的吗?
std::map<any, string> 没有工作所以我想知道是否有另一种方法来获得arbritary键?