Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Юзверы винавра, обьясние где что сделать чтобы он на строку for( uint8_t j = 0; j < 100; j++ ) не ругался "error: 'for' loop initial declaration used outside C99 mode"
Отправлено
MegaJohn
25 августа 2009, г. 11:58
Составить ответ
|
Вернуться на конференцию.
Ответы
Просветите тёмного, что даёт такой способ объявления переменной?
-
=L.A.=
(25.08.2009, 12:51:35
213.79.108.115
,
пустое
)
Уменьшения количества строк, и обьявление переменной там где это используется, а не в начале файла
-
MegaJohn
(25.08.2009, 13:04:30
81.222.85.88
,
пустое
)
Эээ... локальные переменные всегда объявляются только там, где их используют. Насчет строк не понял.
-
=L.A.=
(25.08.2009, 13:12:57
213.79.108.115
,
пустое
)
В С - только до executable statements. "Там где" - С99 и С++ ужо.
-
DASM
(25.08.2009, 13:18:41
203.185.50.220
,
пустое
)
[+]
-
MegaJohn
(25.08.2009, 13:17:59
81.222.85.88
, 148 байт)
:))) Вот оно как. Я тоже человек ленивый, но чтоб до такой степени...
-
=L.A.=
(25.08.2009, 13:21:1
213.79.108.115
,
пустое
)
так лейтмотив всего языка С (начиная с названия!!!) - сократить количество букв... в ущерб смыслу... Его наверно придумал мужик не умеющий быстро печатать... как и быстро думать...
-
basilmak
(25.08.2009, 13:32:49
82.142.173.231
,
пустое
)
тогда нужно переходить на Perl. Там букав ваще почти нет.
-
=L.A.=
(25.08.2009, 13:52:48
213.79.108.115
,
пустое
)
ты всегда называешь в каждом for счетчик шибко осмысленно типа ui_my_counter_for_events или просто i, j, k ? Так вот чтобы эти i , j, k не затрудняли их дальнейшее использование, их лучше объявить именно таким способом
-
DASM
(25.08.2009, 13:25:7
203.185.50.220
,
пустое
)
если у тебя циклы вложенные, то хоть тресни надо будет придумать разные переменные, а если циклы один за другим, то и одна переменная легко справится.
-
=L.A.=
(25.08.2009, 13:28:11
213.79.108.115
,
пустое
)
по твоему сей код некорректный ? :-) (+)
-
DASM
(25.08.2009, 13:45:22
203.185.50.220
, 147 байт)
"Одного оператора в строке достаточно" - это классика. А на Ц пишут, как будто перфокарты вручную вырезают.
-
Крок
(25.08.2009, 15:34:57
62.118.59.14
,
пустое
)
Ужоснах! Это для двумерных массивов будет выблядеть типа(+)
-
Quasy
(25.08.2009, 13:54:27
192.168.0.207,80.243.9.34
, 129 байт)
неааа... Первая i уже никак не доступна вообще, ну разве только адресами мухлевать :) . "::" это переход в global scope
-
DASM
(25.08.2009, 13:57:33
203.185.50.220
,
пустое
)
Ккой-никакой доступ есть. Компилер ее учитывает(+)
-
Quasy
(25.08.2009, 14:45:26
192.168.0.207,80.243.9.34
, 377 байт)
ну так ты к global scope и обратился ! А я про случай (+)
-
DASM
(25.08.2009, 14:52:5
203.185.50.220
, 240 байт)
Не, Вы посмотрите, первое локальное i задаёт кол-во повторов для второго локального i. Повторов...{+}
-
Quasy
(25.08.2009, 14:54:26
192.168.0.207,80.243.9.34
, 187 байт)
Ну и что ? Я не про то. i - выводится 40 раз как i = 1 - она по оператору разрешения видимости :: берется из того же global namespace. Перепиши так
-
DASM
(25.08.2009, 15:00:24
203.185.50.220
, 477 байт)
Задайте первую i до 5. for (int i = 0; i < 5; i++) ПринтФ вызовется 5 раз.(ИАР)
-
Quasy
(25.08.2009, 14:57:6
192.168.0.207,80.243.9.34
,
пустое
)
Какую первую ? Из первого for ? Да, ессно, это вызовет 5-кратное повторение второго for . Я про то, что само ЗНАЧЕНИЕ i из первого for уже не получить никак - она замаскировано вторым i.
-
DASM
(25.08.2009, 15:02:30
203.185.50.220
,
пустое
)
"По делам его узнешь его" :))
-
Quasy
(25.08.2009, 15:17:56
192.168.0.207,80.243.9.34
,
пустое
)
в смысле стиля адназначна некорректный.
-
=L.A.=
(25.08.2009, 13:47:37
213.79.108.115
,
пустое
)
Стиль некорректным не бывает :-)
-
DASM
(25.08.2009, 13:49:16
203.185.50.220
,
пустое
)
как скажишь. Твой мозг то.
-
=L.A.=
(25.08.2009, 13:52:9
213.79.108.115
,
пустое
)
дык, тута в чужом коде ковыряюсь, дык так всё растянуто по вертикали что задолбало ! Функции по четыре экрана, и переменные обьявлены в начале функции а юзаются в конце.
-
MegaJohn
(25.08.2009, 13:23:22
81.222.85.88
,
пустое
)
чужая прога - это всегда ужоснах. Легче свою написать.
-
=L.A.=
(25.08.2009, 13:30:9
213.79.108.115
,
пустое
)
:) Это с точки зрения писателя кода.... Ваще-то, такое объявление переменных, как и объявление внутри группового оператора ({}) экономит стек более верхнего уровня.
-
ETM
(25.08.2009, 13:12:10
94.79.44.2
,
пустое
)
чо-чо ? Нука примерчик. Вот то что пространство имен меньше загромождает, и действительно объявить "на месте" - удобнее, это да. Забавно, что насколько еще помню в2000 VStudio объявленная таким образом переменная счетчик распространялась за область видимости for, что противоречило стандарту.
-
DASM
(25.08.2009, 13:17:24
203.185.50.220
,
пустое
)
Нука, нука. Каким образом экономит?
-
=L.A.=
(25.08.2009, 13:14:8
213.79.108.115
,
пустое
)
(+)...
-
ETM
(25.08.2009, 13:20:32
94.79.44.2
, 537 байт)
да нефига подобного, на стеке сразу будет выделено место в обоих случаях для всех переменных
-
DASM
(25.08.2009, 13:28:35
203.185.50.220
,
пустое
)
а из чего вытекают такие данные "7 байт", "4 байта"? Пока всё голословно.
-
=L.A.=
(25.08.2009, 13:22:55
213.79.108.115
,
пустое
)
Да потому, что во 2-м варианте bI,wI b dwI будут размещатьяся в стеке Function() по одному адресу. А в 1-м вариатне каждой будет выделено своё место...
-
ETM
(25.08.2009, 13:26:47
94.79.44.2
,
пустое
)
опять дже, из чего вытекает, что "будет размещено". Я могу поверить только листингу.
-
=L.A.=
(25.08.2009, 13:29:25
213.79.108.115
,
пустое
)
да гонит он.
-
DASM
(25.08.2009, 13:29:54
203.185.50.220
,
пустое
)
Брысь под лавку, неуч...
-
ETM
(25.08.2009, 13:30:58
94.79.44.2
,
пустое
)
Дай говно, дай ложку... Ручками... Ручками...
-
ETM
(25.08.2009, 13:35:21
94.79.44.2
,
пустое
)
листинг давай, Шумахер
-
DASM
(25.08.2009, 13:34:8
203.185.50.220
,
пустое
)
ПРИЗНАЮ, ЛАЖАНУЛСЯ... РЫДАЮ...
-
ETM
(25.08.2009, 14:00:19
94.79.44.2
,
пустое
)
ну а чего упираться было ? С {} то же самое(+)
-
DASM
(25.08.2009, 14:08:48
203.185.50.220
, 331 байт)
это насчет цикла for. Про {} остаюсь на прежних позициях...
-
ETM
(25.08.2009, 14:01:27
94.79.44.2
,
пустое
)
Пока что свой дам, для LA (+)
-
DASM
(25.08.2009, 13:36:45
203.185.50.220
, 815 байт)
во первых, не вижу разницы между циклами кроме имени счетчика, во вторых это одно семейство МК . А другие контроллеры?
-
=L.A.=
(25.08.2009, 13:51:6
213.79.108.115
,
пустое
)
(+)
-
DASM
(25.08.2009, 13:54:46
203.185.50.220
, 391 байт)
шо цэ таке: Output: 0012FF4C, 0012FF40 ?
-
=L.A.=
(25.08.2009, 14:01:45
213.79.108.115
, 39 байт)
"p Pointer to void Prints the address of the argument in hexadecimal digits. " Печатаем адрес переменной. Никакой экономии объявление как видим не дало - они размещены по разным адресам
-
DASM
(25.08.2009, 14:03:24
203.185.50.220
,
пустое
)
а в экономию я изначально не верил.
-
=L.A.=
(25.08.2009, 14:07:39
213.79.108.115
,
пустое
)
то есть это адреса. Вот теперь понятно.
-
=L.A.=
(25.08.2009, 14:06:12
213.79.108.115
,
пустое
)
Дай говно, дай ложку... Ручками... Ручками...
-
ETM
(25.08.2009, 13:35:45
94.79.44.2
,
пустое
)
Ясно. С дураком спорить бесполезно. Гидротехник-историк самоучка.
-
DASM
(25.08.2009, 13:40:46
203.185.50.220
,
пустое
)
ну и кто тебе сказал про один адрес ?
-
DASM
(25.08.2009, 13:29:18
203.185.50.220
,
пустое
)
или объяви j до аргументов for, либо режим С99 включи, либо С++. Объявление переменных после исполняемых операторов - расширение С99 уже
-
DASM
(25.08.2009, 12:02:17
203.185.50.220
,
пустое
)
дык вот и вопрос как в ентом винавре включить C++
-
MegaJohn
(25.08.2009, 12:06:29
81.222.85.88
,
пустое
)
Ответ: =>
-
DASM
(25.08.2009, 12:04:52
203.185.50.220
, 447 байт,
ссылка
)
void main(){ uint8_t j; //.... for( j = 0; j < 100; j++ ) //....}
-
ETM
(25.08.2009, 12:01:53
94.79.44.2
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 47:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru