bitsets在c++中使用VS2010(另一个)

bitsets in C++ using VS2010 (another)

本文关键字:VS2010 另一个 c++ bitsets      更新时间:2023-10-16

我刚刚问了另一个关于bitsets的问题,这是VS2010中的一个bug使用VS2010实现c++中的bitsets

然而,在改变我用于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

这段代码不会编译,因为内存寻址函数不会出现,要包含这些,我必须包含一堆其他类等等。但是为什么给函数指针数组赋值会影响bitset的值呢?bitset将在init()被调用之前被初始化

解决了

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

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

这是我的任务列表(注意索引)

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

我想我已经得到了教训

相关文章: