Перейти к содержанию
    

Плавный переход C -> C++ под МК

3 минуты назад, EdgeAligned сказал:

Ну, это уже издержки 🙂 Хотя, ядро языка то не меняется, меняются надстройки, которые во многом являются расширением STL.

И лично я пишу лично для себя, поэтому не обращаю внимание, если кому-то покажется, что я недостаточно современно выполнил говнокод. Главное, что я достиг поставленной цели. Меня не устраивали некоторые моменты и я их решил. Ну а то, что в последствии это будет выглядеть устаревшим - ну дак всё течет, всё меняется. Я раньше вообще на ассемблере писал, а щас на него скажут - че за архаизм.
 

Это одно... Но C++ "развиваются" так, что нет уверенности, что код не то что будет выглядеть современным, а вообще компилироваться в ближайшем будущем при переходе на свежую версию.

Посмотрите, например, чего они с назначенной инициализацией делали - изначально она была, начиная с 11 версии - она выпилена, в 20 снова стала доступна. Ну и зачем оно такое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, Arlleex сказал:

обложить функцию InitGPIO()

Я не за инит пинов говорю. На тему инита пинов и на базовом Си было немало споров. Были даже варианты с массивом ANSI-символов. 

3 минуты назад, Arlleex сказал:

вообще компилироваться в ближайшем будущем при переходе на свежую версию.

Тогда зачем переходить на свежую версию? 🙂 Тем более, что обратная совместимость, насколько я могу судить, вполне себе работает. Даже NULL вместо nulptr можно использовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, EdgeAligned сказал:

Я не за инит пинов говорю. На тему инита пинов и на базовом Си было немало споров. Были даже варианты с массивом ANSI-символов. 

Тогда зачем переходить на свежую версию? 🙂 Тем более, что обратная совместимость, насколько я могу судить, вполне себе работает. Даже NULL вместо nulptr можно использовать.

Про какую обратную совместимость вы говорите? Еще раз - попробуйте

struct A {
  int a, b, c, d;
};

int main() {
  A a = {
    .a = 10,
    .b = 20,
    .c = 30,
    .d = 40
  };
}

в C++20 - ок, работает. Тащим кучу легаси кода на C++11 компилятор и получаем ошибки компиляции. Вот она обратная недосовместимость.

Обратная совместимость в плюсах - это всегда минное поле - вроде ходишь по знакомым местам, а прилететь может с любой стороны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, EdgeAligned said:

Я раньше вообще на ассемблере писал, а щас на него скажут - че за архаизм.

TSTB @#177564
?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

34 minutes ago, Arlleex said:

InitGPIO()

нету у меня такого

 

35 minutes ago, Arlleex said:

Читаемо

В течение получаса после написания, не более. По крайней мере у меня ))

Поэтому эту рутинную ботву спрятал внутрь каждого объекта пина, отладил и забыл. Разумеется, так надо проделать для каждого семейства камней. Но тоже один раз.

Больше читать это не приходится.

 

23 minutes ago, Arlleex said:
  A a = {
    .a = 10,
    .b = 20,
    .c = 30,
    .d = 40
  };

по мне  это как раз плохо читаемо, предпочитаю указывать явно для каждого поля. Но это вкусовщина.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/12/2024 at 7:55 PM, EdgeAligned said:

то SPI не подключается к ней. 

Значит я просто не понял вашего сообщения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 12.09.2024 в 22:22, Forger сказал:

по мне  это как раз плохо читаемо, предпочитаю указывать явно для каждого поля.

1) это читаемо и явно для каждого поля.

2) если у вас поля битовые, или структурка константная, или она в регистрах/волатилях - такое присваивание самое простое. Иначе надо городить временные переменные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...