НКУ;Подсказка компилятору, что переменная инициализирована; - PullRequest
0 голосов
/ 21 ноября 2018

Часть кода:

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 ++ (GNU Toolchain для архитектуры A-профиля 8.2-2018-08 (arm-rel-8.23)) 8.2.1 20180802 '


Есть ли способ , чтобы намекнуть компилятору, что переменные фактически инициализируются без явного присвоения им некоторых значений по умолчанию в объявлении?

PS: ошибка приходит с новой версией набора инструментов.
пожалуйста, не советуйте «переписать все» / «плохой дизайн».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...