Объявление типа "for(int i =0...." не раб. (Решено)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
krysun
Открыл глаза
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Объявление типа "for(int i =0...." не раб. (Решено)

Сообщение krysun »

На это:

Код: Выделить всё

for(int i = 0; i <= 7; i++)

Пишет это:

Код: Выделить всё

Error: C:\cvavr2\my_project\tvister\1.c(8): undefined symbol 'int'
Error: C:\cvavr2\my_project\tvister\1.c(8): undefined symbol 'j'

Ваши мысли, господа!
Последний раз редактировалось krysun Сб ноя 13, 2010 23:38:58, всего редактировалось 1 раз.
Это лыжи не едут!!!
lix
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 17, 2010 15:32:19
Откуда: Курган

Re: CVAVR. Объявление типа "for(int i =0...." не работает.

Сообщение lix »

в Си так делать нельзя(можно правда в одном стандарте). выносите объявление i за пределы цикла.
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CVAVR. Объявление типа "for(int i =0...." не работает.

Сообщение avreal »

Небольшо уточнение
«можно правда в одном стандарте» звучит почти как «ну вот есть несколько разных равноправных стандартов, в каком-то одном из них это можно» и такая фраза, на мой взгляд, больше подходит для расширений стандарта в духе привязки переменной к адресам через @.
Стандарты же на язык программирования С развиваются последовательно, с выходом нового стандарта следует старые называть устаревшими, а не новый «одним».
Тем более, что стандарту C99 уже одиннадцать лет.

А то так можно сказать, что так

Код: Выделить всё

int foo(int a, int b)
{
        return a+b;
}
«можно в некоторых стандартах, а в С нужно делать так»

Код: Выделить всё

foo(a,b)
        int a, b;
{
        return a+b;
}
(а ведь когда-то и так писать приходилось, эх...)

Вот если в предыдущих фразах слово «стандарт» заменить на слово «компилятор», тогда всё нормально — «в некоторых компиляторах уже можно применять стандарт С99», «некоторые компилятры не поддреживают стандарт С99», «в этом комипляторе стандарт С99 поддержан не полностью».

p.s. Да, кстати, если уж компилятор не поддерживает из С99 даже объявление по месту применения, то выносить нужно не «за пределы цикла», а «в начало охватывающего блока», что звучит на первый взгляд похоже и иногда даже совпадает по резуьтату, но означает, что из

Код: Выделить всё

        while(1) {
                ...
                for(int i=0; i < 1000; ++i) {
                        ...
                }
                ...
        }
надо делать не

Код: Выделить всё

        while(1) {
                ...
                int i;
                for(i=0; i < 1000; ++i) {
                        ...
                }
                ...
        }
а

Код: Выделить всё

        while(1) {
                int i;
                ...
                for(i=0; i < 1000; ++i) {
                        ...
                }
                ...
        }
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: CVAVR. Объявление типа "for(int i =0...." не работает.

Сообщение ARV »

С99 рулит!!!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
krysun
Открыл глаза
Сообщения: 41
Зарегистрирован: Вт окт 19, 2010 02:24:42
Откуда: Odessa

Re: CVAVR. Объявление типа "for(int i =0...." не работает.

Сообщение krysun »

Все советы учел. Проблема решилась!

Всем ОООГРОМНОЕ спасибо! :beer:
Это лыжи не едут!!!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»