Полная версия этой страницы:
WinAVR+AVRStudio - C99?
Kuzmi4
Aug 21 2007, 13:28
Здравствуйте.
Работаю в связке - WinAVR(2006)+AVRStudio_v4.12b498(AVR Studio-4.12.498:GUI Version - 4, 12, 0, 491). Написал тут такую строчку в коде -
for (UCHAR i=0;i<10;i++) *p2data=0x00;
//ранее
#define UCHAR unsigned char
и значит оно мне выдаёт такие матюки -
../prj1.c:193: error: 'for' loop initial declaration used outside C99 mode
если вынести строку UCHAR i перед циклом - всё ок, мне конечно не мешет, но всё же - может кто нибудь посоветовать - что такое С99 и как с ним бороться?
Спасибо.
o-henry
Aug 21 2007, 14:36
'С99' - это стандарт на язык 'C' от 1999г.
Ваш компилятор ругается на то, что объявление находится прямо в теле цикла, а такое допустимо только
в стандарте 'С99' (более ранние стандарты требуют объявления переменной перед циклом)
Т.е варианта два: либо объявить переменную ранее (что вы уже сделали), либо заставить компилятор работать в режиме совместимости со стандартом 'С99' .
Скорее всего надо просто указать какой-то ключ командной строки компилятору (но я в этом не копенгаген)
Kuzmi4
Aug 21 2007, 14:37
Хм.. это конечно всё хорошо, но может кто нибудь уже сталкивался с такой проблемой - может как то её можно обойти - в сымсле использовать може другой компилер или ключик ?
2 o-henry - запостил позже чем посмотрел..... вот собственно и интересно как заставить его работаь в режиме совместимости с С99?
Цитата(Kuzmi4 @ Aug 21 2007, 18:37)

Хм.. это конечно всё хорошо, но может кто нибудь уже сталкивался с такой проблемой - может как то её можно обойти - в сымсле использовать може другой компилер или ключик ?
2 o-henry - запостил позже чем посмотрел..... вот собственно и интересно как заставить его работаь в режиме совместимости с С99?
Код
# Compiler flag to set the C Standard level.
# c89 = "ANSI" C
# gnu89 = c89 plus GCC extensions
# c99 = ISO C99 standard (not yet fully implemented)
# gnu99 = c99 plus GCC extensions
CSTANDARD = -std=gnu99
Анатолий.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.