海湾合作委员会;提示变量已初始化的编译器;

时间:2018-11-21 04:14:33

标签: c++ gcc

其中有一部分代码:

void func0(xxx* obj)
{
    void* ptr;
    size_t size;
    obj->getBuffer(ptr, size); // Init ptr & size

    while(size) // ERROR: may be used uninitialized
    {
        // processing buffer
    }
}

'xxx.h'

#include <cstddef>

class xxx
{
 public:
    xxx();
    xxx(void* p, size_t s);
    void getBuf(void*& p, size_t& s);
 private:
    void* pp;
    size_t ss;
};


'xxx.cpp'

#include "xxx.h"

xxx::xxx()
{
    pp = (void*)0xFFFF;
    ss = 0x100;
}

xxx::xxx(void* p, size_t s)
{
    pp = p;
    ss = s;
}

void xxx::getBuf(void*& p, size_t& s)
{
    p = pp;
    s = ss;
}


GCC生成“可能未在此函数中初始化的状态”错误。

GCC版本:'aarch64-elf-g ++(用于A-profile体系结构的GNU工具链8.2-2018-08(arm-rel-8.23))8.2.1 20180802'


有没有办法提示编译器变量实际上是初始化的,而没有在声明中为它们分配一些默认值?

PS:新版本的工具链附带错误。
请不要“重写所有内容” /“不良设计”建议。

0 个答案:

没有答案