Различные результаты для одной и той же непустой функции с отсутствующим возвратом в другой среде - PullRequest
0 голосов
/ 14 апреля 2020

Я по ошибке написал не пустую функцию , которая ничего не возвращает. Я не получил предупреждение или какую-то ошибку. Я скопировал ту же функцию в другой среде (эта среда имеет старую версию Ubuntu, а компилятор принадлежит более старому семейству ARM Poky - GNU G CC 5.x ARM poky, до того, как была FAMILLY GNU G CC 6.x ARM OE) и Я получил ошибку sgm .

Я знаю, что не пустая функция имеет неопределенное поведение , но как я могу доказать, что компиляторы влияют на это?

Вот упрощение моей функции:

std::shared_ptr<int> get_ptr()
{
    std::shared_ptr<int> p = nullptr; //missing return
}

int main ()
{
    std::shared_ptr<int> a = get_ptr();  //what is actually initialize with? 
    if (nullptr == a)
    {
        std::cout << "Is working \n"<< std::endl;
    }
    else
    {
        std::cout << *get_ptr();
    }
    return 0;
}

Знаете, кто-нибудь объяснит мне, что происходит за кулисами? Очень поможет мне любая информация.

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