ФлеймФорумПрограммирование

Летопись багов (49 стр)

Страницы: 144 45 46 47 48 49
#720
11:55, 2 дек 2024

Aroch
я о компайл-таймовой проверке, о том что 115200 не влезает в int.

#721
11:59, 2 дек 2024

kipar
> я о компайл-таймовой проверке, о том что 115200 не влезает в int
это уже на совести компилятора что использовал alx, но даже у сишечки (у него вроде си а не плюсы) есть размерные типы и мог бы сразу воспользоваться int32_t.

#722
12:07, 2 дек 2024

Aroch
можно, но моего аргумента это не отменяет.

#723
12:26, 2 дек 2024

kipar
> можно, но моего аргумента это не отменяет.
как видим это не помогло. Но ок, пусть будет. В случае с константами для вычисляемых значений умный компилятор также способен дать предупреждение во время компиляции.

#724
12:29, 2 дек 2024
+ Показать
#725
15:36, 2 дек 2024

=A=L=X=
> А ларчик, кстати, просто открывался

А эти бодрейты в массиве для какой цели используются? Для вывода на экран/консоль (если в AT-команду идет не бодрейт, а лишь индекс)?. Или через них в коде высчитываются тайминги/делители для UART?

#726
(Правка: 3 дек 2024, 4:11) 15:40, 2 дек 2024

Dmitry_Milk
> А эти бодрейты в массиве для какой цели используются?

Даёшь блютуф-свистку команду AT+BAUD8, а когда он даст отклик OK переключаешься на скорость под индексом 8 для общения с ним дальше.
Т.е. примерно так (сейчас по памяти):

Serial.print(String("AT+BAUD") + index);
delay(300); // модемная часть в HC-06 примитивна и тупо выдерживает секундную паузу прежде чем обработать команду
String result = Serial.readString(); // readString как раз имеет секундный таймаут
Serial.begin(speeds[index]); // переключаем скорость серийника
#727
18:47, 2 дек 2024

=A=L=X=
странно что по умолчанию предупреждение отключены. Типа предупреждение в первую очередь и нужны тем, кто только начал писать

#728
15:47, 3 дек 2024

Решил сделать тайплист покрасивее и убрал ::type, в результате компилятор отожрал 32Гб и попросил еще, пришлось перезагружаться.

template <typename ...Types>
struct TypeList
{
  using PopBack = ...;

  // было
  struct PopBack { using type = ...; };
};

Откатил все и сделал внешние геттеры

template <typename TL>
using PopBack = TL::PopBack::type;
#729
20:00, 11 дек 2024

Оказывается в std::to_string есть баг:

double ip;
double fp = modf(123456789.123456789, &ip);
std::string sip = std::to_string(ip);
std::string sfp = std::to_string(fp);

на выходе:

sip = "123456789,000000"
sfp = "0,123457"

короче, длинную дробную часть он не умеет конвертить и судя по количеству разрядов, там тупо идёт расчёт на float.

Если что, нормально перевести можно вот так:

std::string sip = std::format("{}", ip);
std::string sfp = std::format("{}", fp);

заодно там будет точка вместо запятой по дефолту.

Багу могут исправить в С++26, про это что-то тут написано, но мне лень читать:
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2587r3.html

#730
(Правка: 20:39) 20:37, 11 дек 2024

THE_MASTER
> на выходе:
>
> sip = "123456789,000000"
> sfp = "0,123457"
А что должно быть?

UPD

#include <cstdio>

int main() {
    printf("%e\n", double(123456789.123456789) - double(123456789.123457));
    return 0;
}
ASM generation compiler returned: 0
Execution build compiler returned: 0
Program returned: 0
-2.086163e-07

Ладно, вижу косяк, баг засчитан.

#731
10:08, 15 янв 2025
*p_counter++;

Не люблю в принципе конструкции с такими разыменовываниями, редко ими пользуюсь, но сейчас вносил правки в чужой код и нарвался.

#732
12:26, 16 янв 2025

Компилятор пишет "implicit declaration of function tralala".
Добавляю #include "ululu.h"
все равно пишет "implicit declaration of function tralala"
что за бред, clean & build, отключил синхронизацию nextcloud, все равно тоже самое.
Копирую из h файла объявления функций, вставляю прямо перед вызовом - работает.
Смотрю на один файл, смотрю на второй файл, ничего не увидел пошел домой. Сегодня открываю

+ Показать
Страницы: 144 45 46 47 48 49
ФлеймФорумПрограммирование