Ошибка кода или компилятора в CLANG на Raspberry Buster - PullRequest
3 голосов
/ 08 июля 2019

У меня есть некоторый код, считывающий данные из текстового файла и преобразующий их в float.На моих новых Raspberry PI (3B + и Zero), на которых запущен raspbian 10 Buster, я получаю странное поведение с clang ++ (v 7.0.1).Код

#include <iostream>
#include <string>

using std::cout;
using std::endl;

int main(void){

    std::string str="3.14";
    float fl = std::stof(str);

    cout << fl << endl;
    cout << fl << endl;
    cout << fl << endl;

    return 0;
}

, скомпилированный с clang++ -std=c++11, приводит к следующему выводу:

$ a.out 3.14 3.68935e+19 0

Есть ли фундаментальная ошибка в моем коде или это проблема?с clang?

Проблема возникает только на моих новых PI, и только с использованием clang ++ (не с g ++).Когда я изменяю «float» на double (и «stof» на «stod»), то поведение такое, как и ожидалось (выводит три раза «3.13»)

Обновление 18. Июль 2019 Похоже,быть решена обновлением clang

...