реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Ошибка Access Violation при компиляции
dup(?)
сообщение Dec 18 2015, 08:12
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 18-12-15
Пользователь №: 89 747



При переносе проекта из IAR EWARM 5.11 в 7.40 обнаружилось, что последний на код типа
Код
int f(void){
    int res;
    do{
            if(res<1)
                return 0;
            else
                return 1;
    }
    while(res<1);
}


Выдает:
Internal Error: [CoreUtil/General]: Access violation (0xc0000005) at 00E5D6E2 (reading from address 0x4)

5.11 компилирует молча.
Это у всех так или у меня IAR кривой?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 18 2015, 08:33
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(dup(?) @ Dec 18 2015, 14:12) *
Это у всех так или у меня IAR кривой?

Ну да - IAR кривой, падает иногда на ровном месте.
Но Ваш код ещё кривее, IAR от такого бреда вообще в осадок выпал smile3009.gif
Go to the top of the page
 
+Quote Post
dup(?)
сообщение Dec 18 2015, 09:03
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 18-12-15
Пользователь №: 89 747



Ежу ясно, что это всего лишь демонстрация ошибки, а не реальная функция.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Dec 18 2015, 09:53
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Цитата(dup(?) @ Dec 18 2015, 13:03) *
Ежу ясно, что это всего лишь демонстрация ошибки, а не реальная функция.

а смысл в цикле do-while, если из него гарантированно вылетаете на первом проходе?
И неициализированный res, по которому идет сравнение доставляет.
Странный код...


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 18 2015, 09:55
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Internal Error - это ошибка внутри компилятора. Пишите в техподдержку ИАРа, пусть чинят и пришлют вам исправленную версию.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
den_po
сообщение Dec 18 2015, 18:25
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Если IAR - ограниченная версия, то в техподдержке вроде как пошлют.
Всякоразные баги IAR (а таких действительно хватает) иногда лечатся отключением оптимизации.
Go to the top of the page
 
+Quote Post
aiwa
сообщение Dec 19 2015, 22:34
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(dup(?) @ Dec 18 2015, 10:12) *
При переносе проекта из IAR EWARM 5.11 в 7.40 обнаружилось, что последний на код типа
Код
int f(void){
    int res;
    do{
            if(res<1)
                return 0;
            else
                return 1;
    }
    while(res<1);
}


Выдает:
Internal Error: [CoreUtil/General]: Access violation (0xc0000005) at 00E5D6E2 (reading from address 0x4)

5.11 компилирует молча.
Это у всех так или у меня IAR кривой?


Попробуйте так:

Код
int f(void){
    do
    {
    int res;
    do{
            if(res<1)
                return 0;
            else
                return 1;
    }
    while(res<1);
    }while(0);
}

Результат работы тот же, но компилятор должен пропустить
т.е. заключить вызывающий ошибку компилятора кусок в замыкание do{}while(0);

Сообщение отредактировал IgorKossak - Dec 20 2015, 15:53
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 17:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016