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

Инициализация константного указателя (Си)

4 минуты назад, MrBearManul сказал:

С GCC давно не работал. Но от коллег слышу "поросячий визг", что это "самый тру компайлер"... Сам работаю с IAR.

У ТС-а его RISCV-ветка. А Ваши коллеги визжат скорее всего от ARM- или CortexM- ветки.

Разница в глубине проработки деталей между разными ветками может быть существенной.

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


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

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

А Ваши коллеги визжат скорее всего от ARM- или CortexM- ветки.

Нет, они визжат от x86-ia64 gcc ветки. Но я думал, что "сверху" этот компилятор "мыслит" одинаково для любой архитектуры.

4 минуты назад, jcxz сказал:

Разница в глубине проработки деталей между разными ветками может быть существенной.

Спасибо. Я не разбираюсь с темой gcc)

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


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

3 hours ago, MrBearManul said:

Нет, они визжат от x86-ia64 gcc ветки. Но я думал, что "сверху" этот компилятор "мыслит" одинаково для любой архитектуры.

Одинаково, да. Только под разные архитектуры его собирают разные команды, и в какие-то не самые популярные ветки новые "фишки" попадают ооочень нескоро.

Впрочем, в версии 7.1, которую использует @Harvester, вся нужная магия уже есть (см. выше ссылку на godbolt, там можно мгновенно сравнить разные компиляторы). Осталось только поменять расширение файла с исходником с ".c" на ".cpp".

Ваш IAR, кстати, тоже более-менее должен уметь современный С++ (пример, который я показывал, это C++14).

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


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

On 4/27/2021 at 11:58 AM, Harvester said:

Получается, что инициализация


static BusFrame *const pxTxBuffers[] = {busBufTx1, busBufTx2};

происходит в рантайме? Я считал, что константы известны уже на этапе компиляции.

У вас сам массив не константный (добавьте const после static). Но даже это для С может не помочь - там не всё то, что написано с const, является действительно константой :)

 

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


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

2 часа назад, xvr сказал:

У вас сам массив не константный (добавьте const после static).

Массив у ТС-а как раз константный: константный массив указателей на переменную.

А то, что вы предлагаете, создаст: константный массив указателей на константу.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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