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

IAR не поддерживает typeof ?

На typeof  получаю - Warning[Pe223]: function "typeof" declared implicitly.

Можно как то включить или не судьба?

 

посмотрел в stddef.h - нету. offsetof есть а typeof нет. это реально проблематично вернуть тип в ARM архитектуре? Си компайлеры под Windows поддерживают typeof.

 

Изменено пользователем jenya7

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


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

typeof нет ни в стандарте С, ни в С++.

Насколько я помню, typeof есть только у GCC.

 

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


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

40 минут назад, x893 сказал:

+ARMCC

LLVM, который Keil ARM Compiler 6, тоже понимает. Я, правда, сделал #define typeof __typeof__.

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


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

Как пользователь периодического использования IAR по неволе, скажу, что IAR местами туповат...  По сравнению хотя бы с тем же GCC. :biggrin:

 

Мои аргументы, возникшие по ходу использования IAR:

1. Не поддерживает локальные метки

2. Часто встречается конфликт стандартных хедеров - приходится менять местами хедеры, пока не пропадёт ошибка

3. Фатальные ошибки при компиляции - причину ошибок установить либо невозможно, либо сложно

4. Синтаксис местами не гибкий - приходится выкручиваться

5. Крайне гнилая система описания команд для линковщика/компоновщика.

 

Из плюсов IAR(по сравнению с GCC):

Даёт более компактный код - меньше в 1,5-2 раза.  Причём при оптимизации по скорости.

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


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

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

Из плюсов IAR(по сравнению с GCC):

Даёт более компактный код - меньше в 1,5-2 раза.  Причём при оптимизации по скорости.

А вы не проверяли, может этот более компактный код стал медленнее? Чем-то напоминает анекдот:

Цитата

 

- Мы починили, теперь ваш принтер работает как часы!

- Это хорошо, но мне нужно было, чтобы он работал как принтер...

 

 

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


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

В 10.08.2022 в 07:38, repstosw сказал:

Даёт более компактный код - меньше в 1,5-2 раза.  Причём при оптимизации по скорости.

Это для какого ядра?

Для Cortex-M, при отптимизации по скорости, я наблюдаю как раз раздувание кода. Некоторых функций - многократное. Главным образом - из-за развёртывания циклов. А лучший результат даёт балансная оптимизация. Имхо.

 

PS: И почему-то всегда думал, что GCC оптимизирует лучше чем IAR.

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


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

ЫАР - чемпион по сжатию кода. Пишут, что используется lz77 сжатие данных:

https://habr.com/ru/post/527820/

image.thumb.png.dd87d41515aa4cbbde44a9fa140104a5.png

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


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

В 10.08.2022 в 13:24, repstosw сказал:

ЫАР - чемпион по сжатию кода. Пишут, что используется lz77 сжатие данных:

Ещё раз - какое ядро? IAR для разных ядер - разный.

Cortex-M: Это ерунда. Да и к коду это не относится. А код IAR генерит далеко неоптимально - очень много лажает. Видно даже при поверхностном взгляде.

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


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

17 hours ago, jcxz said:

какое ядро?

Cortex-A7.  Чипы A13, V3s, T113-s3.

 

Сборка шла с ключами для GCC:

с/с++:
-Ofast -marm -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=vfpv4-d16 -mfpu=neon -ftree-vectorize -fno-math-errno -fmax-errors=1 -ffunction-sections -fdata-sections

asm:
-mcpu=cortex-a7 -mfloat-abi=hard -mfpu=vfpv4-d16 -mfpu=neon

linker:
-marm -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=vfpv4-d16 -mfpu=neon -ftree-vectorize -fno-math-errno -Wl,--gc-sections -Wl,--static -nostdlib -nostdinc -nostartfiles -ffreestanding

 

Для ЫАР:

image.thumb.png.989c4f77ed7957dc4cc4b1b1197757bf.pngimage.thumb.png.59e2aeacc5974e81cb930c5de4db0278.png

Изменено пользователем repstosw

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


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

Странное сравнение. Либо оба компилятора на оптимизацию по размеру и сравнивать размер, либо оба на скорость и сравнивать скорость. Сравнивать размер при оптимизации по скорости, по меньшей мере, странно.

Для GCC -fno-exceptions -fno-rtti  -flto для embedded еще уместно.

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


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

16 часов назад, VladislavS сказал:

Сравнивать размер при оптимизации по скорости, по меньшей мере, странно.

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

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


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

5 часов назад, SII сказал:

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

Максимальный уровень оптимизации как бы предполагает, что клиент готов отдать все за любой прирост :biggrin:

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


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

16 часов назад, Сергей Борщ сказал:

Максимальный уровень оптимизации как бы предполагает, что клиент готов отдать все за любой прирост :biggrin:

Сравнить же всё равно интересно: насколько велик прирост скорости у разных компиляторов и как много места им для этого понадобилось. Да и не всегда "готов отдать всё": скажем, прошивка перестанет влезать во флэш определённого размера, нужно искать что-нибудь побольше -- или несколько пожертвовать скоростью.

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


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

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

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

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

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

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

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

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

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

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