小编hat*_*ine的帖子

单元测试和boost :: asio

我正在使用boost :: asio编写小型XMPP服务器,我想对我的代码进行单元测试.问题:

  1. 是否有一些现成的框架?据我所知,我需要为boost :: asio类/模板提供模拟对象,我真的想自动生成这个(半).
  2. 是否可以测试并发性(例如,多个服务器连接和它们之间的消息路由)?

c++ boost unit-testing xmpp boost-asio

11
推荐指数
1
解决办法
3081
查看次数

在C++中模拟编译时反射

我有一个以下结构:

struct Data
{
    std::string firstMember;
    std::string secondMember;
    std::string thirdMember;
};
Run Code Online (Sandbox Code Playgroud)

我想按字符串名称选择其中一个成员constexpr,比如

Data instance;
auto& member = getMember(instance, "firstMember"); 
Run Code Online (Sandbox Code Playgroud)

getMember是constexpr函数/ struct/macros /有问题和表达式应该(我希望它)优化为简单auto& member = instance.firstMember;.我的愿望是能够getMember从另一个constexpr函数调用,而另一个函数又是特定成员的计算名称 - >某种编译时间反射.

我知道,C++中没有反射,因此可以以某种方式注册(部分特殊化?使用一些宏魔法?)有问题的struct成员名称,如:

REGISTER_MEMBER(Data, "firstMember", firstMember);
Run Code Online (Sandbox Code Playgroud)

我想要的只是编译时优化并在运行时不执行任何操作.这可能在C++ 11中如何实现?

c++ constexpr

8
推荐指数
1
解决办法
1996
查看次数

msvc相当于gcc的__BASE_FILE__

__BASE_FILE__在Visual C++中是否有任何等价物?我想知道VC++ 当前正在编译的文件的名称.

注意:__FILE__扩展到当前文件,例如它可能是#includes之一.


来自gcc的文档:

__BASE_FILE__

此宏以C字符串常量的形式扩展为主输入文件的名称.这是在调用C编译器时指定为参数的源文件.

c++ macros gcc visual-c++

7
推荐指数
2
解决办法
2270
查看次数

变量'dim'(不是数组)周围的堆栈已损坏

我正在尝试使用fstream读取二进制文件,我之前在那里写过一些数据.

问题是在到达函数结束后,将显示主题中的消息

代码如下:

ifstream in("contrib.bin", ios::in | ios::binary );

char *nume, dim;
in.read((char*)&dim, sizeof(int));
nume = new char[dim + 1];
in.read(nume, dim);
nume[dim] = '\0';
double imp;
in.read((char*)&imp, sizeof(double));

delete [] nume;
Run Code Online (Sandbox Code Playgroud)

现在,我已完成我的作业并寻找这个问题,但面对它的其他人有数组,而我的变量是一个简单的字符.

有人能指出我正确的方向吗?

c++ fstream corrupt visual-studio-2010

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