Размер массива, определенный в переменной в C, не может быть скомпилирован в IAR, но в Keil работает нормально - PullRequest
2 голосов
/ 26 сентября 2019
#include<stdio.h>
int main()
{
     int x = 5;
     int length = 5+x;
     int arrayw[length];


        return 0;
}

Этот код прекрасно работает в gcc и Keil, но не в IAR.

I get this error : 
Error[Pe028]: expression must have a constant value 

Как это можно сделать, чтобы скомпилировать в IAR toolchain

Ответы [ 2 ]

3 голосов
/ 26 сентября 2019

Выполните следующие действия: https://netstorage.iar.com/SuppDB/Public/UPDINFO/013556/ew/doc/infocenter/GettingStarted/CreatingAnApplicationProject/CreatingAnApplProj.ENU.html

На шаге, где написано Настройка параметров проекта , обязательно выберите C99.

Вот окно, которое вы ищетедля:

enter image description here

PS Существует также возможность явного разрешения VLA в IAR.Смотри http://www.keil.com/support/man/docs/armcc/armcc_chr1359124950297.htm

2 голосов
/ 26 сентября 2019

Массивы переменной длины должны быть явно включены, чтобы компилятор мог их распознавать.Это можно сделать, добавив --vla в командную строку компилятора или выбрав Компилятор C / C ++> Язык 1> Разрешить VLA в диалоге параметров в IDE.

Обратите внимание, что VLA, сгенерированный iccarm, расположен накуча.

...