使用VS2010的C ++中的位集(另一个)

时间:2011-08-04 19:56:55

标签: c++ visual-studio-2010 bitset

我刚刚问了另一个关于bitset的问题,结果证明这是VS2010中的一个错误 bitsets in C++ using VS2010

但是在更改我用于bitset的构造函数时,我遇到了另一个问题(如另一个问题的编辑中所述)

当使用bitset的默认构造函数时,它不会被初始化为0,而是被设置为

[8](0,0,0,0,1,1,0,1)

_p.to_ulong()返回1390560944

这是代码

class Flags
{
private:
    //List of 8 bits
    std::bitset<8> _p;
public:
    Flags();
}

Flags::Flags()
    : _p()
{}

我也尝试使用: _p(32),但这导致相同的位设置如上,但to_ulong()返回的值为1437615792

发生了什么事?

编辑:这是在VS2010 SP1 64位编译,作为32位程序

编辑2:

在下面的评论中,我说我可以在一个简单的程序中复制它 - 我能够两次但是从那以后它每次都很好 - 也许我只是很慢,是漫长的一天。

在我的另一个项目(我正在尝试的模拟器)中,我将其缩小为一些函数指针数组。如果我拿出他们被分配值的地方,那么我不会有任何躲闪的行为,这些阵列可以在这里看到

http://pastebin.com/QyiJGzNd

该代码将无法编译,因为内存寻址函数将不存在,并包含那些我必须包含一堆其他类等等。但为什么将值赋值给函数指针数组会影响a的值位集合?在调用init()

之前,将初始化bitset

1 个答案:

答案 0 :(得分:0)

解决了它

我有这个数组(注意索引)

void (MPU::*_STY[0x94])(BIT_8 ** pSource, const BIT_8 args[]); // STY

这是在我的作业列表中(注意索引)

_STY[0x94] = &MPU::ZeroPageX_SourceOnly;

我想我刚刚吸取了教训