NullPointer 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Что же такого...Глобальную за локальной не видать. А локальная не используется, вот и выкинул... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Глобальную за локальной не видать. А локальная не используется, вот и выкинул... Кого? Он жеж глобальную по отношению к циклу и выкинул. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Кого? Он жеж глобальную по отношению к циклу и выкинул. Если объявить int i=0, j=0; , то тут понятно, что объявлено две переменные. А если сделать то же самое в инициализации цикла for: for (int i=0, j=0;...) , то догадаться уже сложнее :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Глобальную за локальной не видать. А локальная не используется, вот и выкинул... Точняк! И даже больше локальная переменная внутри тела цикла не 32-битная, а 8-ми. Так вот всё будет однозначно: uint32_t data; uint8_t msk; for (msk=0, data=0; msk<24; msk++) Кого? Он жеж глобальную по отношению к циклу и выкинул. А вас что, он не предупреждал: main.c:28: warning: 'data' may be used uninitialized in this function Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба А вас что, он не предупреждал: В том и дело, что если инициализировать и в начале и в цикле, предупреждения не будет, но овнокод тот же. , то догадаться уже сложнее :) Вот! Компилер живет своей жизнью, и надо его попросить сделать правильный код. Может, денег хочет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Да ладно! Он честно ругнулся - вы игнорировали. Ход его рассуждений тоже понять можно, раз уж программисту неважна эта переменная (её значеие), то я забью на неё и связанное с ней биг-болт:) В том и дело, что если инициализировать и в начале и в цикле, предупреждения не будет, но овнокод тот же. В том и дело что в цикле Вы инитите уже другую локальную переменную с тем же именем. По идее warning по отношению ко внешней относительно цикла переменной должен бы был остаться... Похоже на багу в этой версии avr-gcc 4.3.3. Проверил на 4.4.3 - уже пофиксили - даёт warning. Так-что не надо катить бочку на святое! :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба тоже понять можно, раз уж программисту неважна эта переменная (её значеие), то я забью на неё и связанное с ней биг-болт:) Дык низзя жеж понять - магическая запятая - и все пропало ©!!! Давайте тогда ваще все выкинем(б), даже если(!) есть обращения к volatile - и... короче,ето багофича, как ея правильно сформулировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба что сказать, переходите на версию посвежее ... повторюсь - на avr-gcc 4.4.3 всё пучком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба на avr-gcc 4.4.3 всё пучком. Это клёновская? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Это клёновская? Нет это атмеловская. http://www.atmel.com/dyn/resources/prod_do...2.win32.x86.exe К ней правда какой то древний binutils прикручен (не весь древний, что характерно). Я собрал для себя из 2 - компилятор и avr-libc от avr-toolchain-installer а всё остально от WinAVR. Клён уже скачет впереди планеты всей на gcc-4.6.0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Вот! Компилер живет своей жизнью, и надо его попросить сделать правильный код. Может, денег хочет? Дык, кто ж не хочет? :) На самом деле, я тоже не сообразил, что там новая локальная переменная образуется:) Теперь бум знать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 17 февраля, 2011 Опубликовано 17 февраля, 2011 · Жалоба ..это атмеловская. http://www.atmel.com/dyn/resources/prod_do...2.win32.x86.exe К ней правда какой то древний binutils прикручен (не весь древний, что характерно). Ошибся я с выводами в прошлый раз, это не binutils в тулчейне старый а coreutils. Судя по всему, они используют этот раритет: http://gnuwin32.sourceforge.net/packages/coreutils.htm А есть гораздо (на 6 лет) свежее: http://ftp.gnu.org/gnu/coreutils/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 23 марта, 2011 Опубликовано 23 марта, 2011 · Жалоба как заставить компилятор помещать в elf-файл полные пути к исходникам для отладки "по коду"? по умолчанию туда суются относительные пути от корня проекта и в итоге при определенном стечении обстоятельств отладчик "находит" не те исходники... отладочная информация формата dwarf-2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NullPointer 0 31 марта, 2011 Опубликовано 31 марта, 2011 · Жалоба Спасите мудрым советом, ибо не знаю куда копать :( Несколько проектов собираются правильно и без ошибок с любым уровнем оптимизации (s, 0-3) на всех доступных мне компах (включая виртуальные; WinAVR везде одинаковый), но не собираются с оптимизацией по размеру (s) на основном рабочем ноуте, хотя раньше собирались (на нём и написаны были, собственно). Makefile стандартный, созданный софтинкой MFile. Ошибка: -------- begin -------- avr-gcc (WinAVR 20100110) 4.3.3 Copyright © 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiling C: main.c avr-gcc -c -mmcu=atmega8535 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -ffunction-sections -Wa,-adhlns=./main.lst -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o In file included from main.h:10: c:/winavr/lib/gcc/../../avr/include/avr/interrupt.h:38:20: error: calling fdopen: No such file or directory In file included from main.h:12: c:/winavr/lib/gcc/../../avr/include/avr/pgmspace.h:82:20: error: calling fdopen: No such file or directory In file included from main.h:13: c:/winavr/lib/gcc/../../avr/include/avr/eeprom.h:38:20: error: calling fdopen: No such file or directory make.exe: *** [main.o] Error 1 > Process Exit Code: 2 > Time Taken: 00:00 Куда копать, что и где могло поломаться? Переустановка WinAVR ничего не дала. WinAVR действительно установлен в C:\WinAVR, пути к файлам правильные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 1 апреля, 2011 Опубликовано 1 апреля, 2011 · Жалоба WinAVR действительно установлен в C:\WinAVR, пути к файлам правильные.Возможно на других компах установлена другая версия программ из тех, что лежат в WinAVR/utils и путь к этой другой версии прописан в path первым. Переименуйте эту папку, если компиляция будет продолжать проходить - ищите, откуда берутся эти утилиты и копируйте их на "больной" комп. Или наоборот - найдите, откуда эти утилиты берутся на "больном" и уберите этот путь из path. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться