小编cwm*_*wm9的帖子

VS2012 NativeDE\StepOver注册表项是否阻止特定功能的步入更改格式?

我遇到了几个帖子/博客,展示了如何使用注册表项禁用步入特定功能和/或名称空间(例如,增强库).

当我尝试使用VS2012时,我没有得到预期的结果.

我试过了...

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0_Config\NativeDE\StepOver]
"10"="std\:\:.*"
"20"="boost\:\:.*"
Run Code Online (Sandbox Code Playgroud)

格式有变化吗?我有正确的注册表项吗?

c++ debugging visual-studio visual-c++ visual-studio-2012

15
推荐指数
1
解决办法
2853
查看次数

在c ++/c ++ 11中测试"POD-ness"?

我有一些代码,它采用打包的POD结构/类并将其复制到内存块中.

struct A
{
   int a;
   int b;
} a;

memcpy(mymemoryblock, (void *)&a, sizeof(A));

// later I get a reply and...

memcpy((void *)&a, mymemoryblock, sizeof(A));
Run Code Online (Sandbox Code Playgroud)

这仅适用于POD类型的数据,如果有一种方法可以测试POD-ness,我想知道什么.如果有人不小心将成员函数添加到此类,则memcpy操作将变为无效,但仍可编译.这导致很难检测到错误.

是否有一个is_POD_type(A)函数,或者可以用来在运行时或编译时检测PODness的其他技巧?

c++ types pod c++11

6
推荐指数
1
解决办法
1315
查看次数

可以混合使用std ::'s和boost ::'s :: bind和:: function会导致问题吗?

我认为答案是否定的,但我只想确定.

如果我std::function在函数中有一个参数,那么传入a是否有任何问题,boost::bind反之亦然?

编辑:

我发现当你包含boost\bind.h时,boost :: bind使用的占位符会直接导入到命名空间中,并且它们与std :: bind不兼容.对于std :: bind,您必须引用显式占位符,如下所示:std :: placeholders :: _ 1,或者执行其他一些typedef或使用magic来使它们同时可用.

c++ boost std c++11

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

使用带有ServiceStack.Client包v.4.0.3的VS2013缺少命名空间ServiceClient(ServiceStack.ServiceClient.Web)

我是C#,Visual Studio的新手,对ServiceStack来说还是全新的.我正在尝试创建一个ServiceStack.ServiceClient.Web.JsonServiceClient对象,但是我收到错误:

The type or namespace name 'ServiceClient' does not exist in the namespace
'ServiceStack' (are you missing an assembly reference?)
Run Code Online (Sandbox Code Playgroud)

我使用了nuGet附加组件的库包管理器来安装"服务客户端for ServiceStack"v4.0.3包(id:ServiceStack.Client),验证我的目标framerwork是".NET Framework 4.5",并包含在内

using ServiceStack.ServiceClient.Web;
Run Code Online (Sandbox Code Playgroud)

在我的代码顶部.我错过了什么?

谢谢.

servicestack visual-studio-2013

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

有没有办法断言在调用方法之前是否已正确构造对象?

我在代码中遇到了这种奇怪的无指针情况,现在想知道是否有办法检测它(除了崩溃).代码设法进入未构造对象的方法.当构造b1时,尚未构造a,并且b尝试使用它.在构造b2时,a被正确构造并且代码按预期工作.

除了显而易见的,"不要在你的代码中执行此操作",我想知道是否有一种方法可以在编译或运行时检测到这一点.编译器根本没有检测到它,我刚刚得到一些关于在程序崩溃时初始化DLL时运行托管代码的一些模糊和非常无益的消息.

我试图测试"this",但它不是NULL,因为内存已被赋值 - 只是构造函数没有被调用,所以内存处于不确定状态.

我原本以为编译器会坚持使用某些调试代码来检测何时发生这种情况,但我猜不会.

是否有任何断言或测试或编译时间开关我可以用来检测这种情况,或者它只是归结为"如果它疼,不要那样做?"

 OUTPUT:
 (NULL)
 test

#include "stdafx.h"
#include "cstring"

class Apple 
{
    char *sometimesinitialized;

    public:
    Apple () { 
        sometimesinitialized = new char[15];
        strcpy_s(sometimesinitialized, 5, "test");
    };
    void test()
    {
        printf("%s\n", sometimesinitialized);
    }
};

class Ball
{
    public:
    Ball();
};

Ball b1; // OOPS!
Apple a;
Ball b2; // Works as expected

Ball::Ball()
{
    a.test();
}

int _tmain(int argc, _TCHAR* argv[])
{
    scanf_s("%i");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ constructor

0
推荐指数
1
解决办法
264
查看次数