Array和var没有预定义的内容

时间:2014-04-25 08:26:00

标签: c++ arrays arduino avr stdint

我为我的LED立方体制作了一个Animation.cpp,每个帧和每一层包含一个2维的uint16_t数组。我在.cpp中初始化数组,并且还包含一个包含帧数的var。但是当它运行时,数组似乎只有随机数据(来自ram),而int w / frame的数量为0。

链接到cpp: http://hastebin.com/kunemopece.avrasm

链接到标题: http://hastebin.com/duvijipeya.vala

我几乎是CPP / GCC的初学者,所以,我做错了什么?

2 个答案:

答案 0 :(得分:1)

您班级中frames的定义是您在cpp中定义的frames的不同集合。 尝试在Animation类构造函数中初始化帧。

答案 1 :(得分:1)

在C ++ 11中,您可以直接执行此操作:

class Animation
{
public:
    std::uint16_t frames[8][4] = {
        {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
        {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
        {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
        {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
        {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
        {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
        {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF},
        {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}
    };
    std::uint8_t currentFrame = 0;
};

在C ++ 03中,你必须使用构造函数:

class Animation
{
public:
    Animation() : currentFrame(0)
    {
        for (int i = 0; i != 8; ++i) {
            for (int j = 0; j != 4; ++j) {
                frames[i][j] = 0xFFFF;
            }
        }
    }

    uint16_t frames[8][4];
    uint8_t currentFrame;
};