В лагере С уже давно застой, ничего нового практически не появляется, сейчас пишут практически как и 20 лет назад, а раз так, то даже книги по С читать незачем и поступление новых знаний о современных подходах в программировании очень ограничено. О С++ у людей также какие-то совершенно не соответствующие действительности представления. Для проверки создаю проект мигания светодиодом на С++, там пин - это шаблонный класс и на плюсах даже стартап. Потом создаю второй проект, делаю то же самое на регистрах, удаляю из стартапа несколько лишних extern "C", еще компилятор ругался на константу 8'000'000, так в C делать нельзя. Компилируем оба проекта, сравниваем бинарники и они одинаковы, что не удивительно, ведь очень похожа и кодовая база обоих компиляторов в gcc. Теперь пишу в сишной версию простой код:
Код: Выделить всё
const uint32_t Size = 10;
uint8_t buf[Size];
Код: Выделить всё
constexpr bool isPowerOfTwo(uint32_t val) { return (val != 1) && !(val & (val - 1)); }
const uint32_t Size = 10;
uint8_t buf[Size + !isPowerOfTwo(Size)];


