Говнокод по пятницам. Эпизод 3. «Serial.println vs. Imperial Starfleet»

Так ото-ж :slight_smile:

Ну, да, как писал поэт: «Мы – волчата сосали волчицу и всосали «нельзя за флажки»». И это правильно!

Но есть и другой подход. Знаете анекдот, как Ворона с Зайцем на вертолёте катались? Ну, типа Ворона села на край и ноги свесила наружу. Заяц спрашивает: «Ты что делаешь?» – «Выпедриваюсь!» – «Давай и я с тобой!». Ну, тоже сел, ноги свесил. Тут вертолёт качнуло и они вывалились. Заяц летит камнем к земле, Ворона подлетает и спрашивает: «А ты летать-то умеешь?» – «Нет» – «А хренли тогда выпендривался?»

Оно, конечно, выпендрёж, но иногда же и летать научиться хочется :slight_smile:

чувствую, интрига еще не кончена… :slight_smile:

А он больше нигде и не используется ))

ну так-то да, хотя “неаккуратненько”. На большом ПК такие финты приводят к утечкам памяти.

Так и изначальный код от Петровича приводит к “потере” литерала, так что да ))

Это понятно, если бы я таки заморочился таким извращением, делал бы примерно так

char *welcomeMessage = (char *)"TIE Fighter ECU standard mode!\r\n";
char *serviceMessage = (char *)"TIE Fighter ECU service mode\r\n";
char *mes = NULL;

.................

mes = (result) ? welcomeMessage : serviceMessage;

.................

Serial.println(mes);

// и далее по коду

Но на скорую руку и так сойдет (с) ))

1 лайк

С чего? Там же принимающий буфер длиннее. Всё там нормально с памятью. Можете запросить занятую память до и после – всё там нормально.

Тогда уж типа:

constexpr char *welcomeMessage = "TIE Fighter ECU standard mode!\r\n";
constexpr char *serviceMessage = "TIE Fighter ECU service mode\r\n";
...
Serial.println(result ? welcomeMessage : serviceMessage);
1 лайк

А с каких пор в С/С++ стало нельзя переписывать константы ?
Всегда вроде можно было, нужно просто знать как это делать.

это интересно

Вот и я ж про тоже!

Особенно в топиках, название которых начинается с того же слова, что и у данного :slight_smile:

Я когда полез изучать Си на рейвслай, там в теме про константы сразу было описание того, что константы по факту нифига константами не являются и были приведены примеры как делать не надо.

это как красный свет. Физически светофор ехать не мешает, но все разумные люди знают, что ехать на красный не надо.
Так и с константами.


нада напится)))

ящик Пандорры :slight_smile:

Ну не просто же так пиндосы хотят переписать все в мире с С на Rust :slight_smile:

Более корректно будет назвать это “объезд светофора по тротуару”

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

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

У тех же пиндосов есть поговорка: “Every house has а mouse”. Наиболее удачный перевод, что я слышал - “Под каждой крышей свои мыши”.

А я так и не понял. Всё же суть в том, что strcpy в конце добавляет символ окончания строки ‘\0’ или в чем???