Jump to content

    
Harvester

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

Recommended Posts

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

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

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

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

Share this post


Link to post
Share on other sites
3 минуты назад, jcxz сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites
3 hours ago, MrBearManul said:

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

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

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

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

Share this post


Link to post
Share on other sites
On 4/27/2021 at 11:58 AM, Harvester said:

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


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

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

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

 

Share this post


Link to post
Share on other sites
2 часа назад, xvr сказал:

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.