Eclipse компилируется правильно, но показывает ошибку в представлении «Проблемы» - PullRequest
3 голосов
/ 12 января 2012

Вывод на консоль:

**** Build of configuration Release for project Timertestnew ****

make all 
Building file: ../main.cpp
Invoking: AVR C++ Compiler
avr-g++ -I"G:\arduino-1.0\hardware\arduino\cores\arduino" -DARDUINO=100 -Wall -Os -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega328p -DF_CPU=16000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.cpp"
Finished building: ../main.cpp

Building target: Timertestnew.elf
Invoking: AVR C++ Linker
avr-gcc --cref -s -Os -o"Timertestnew.elf"  ./main.o   -lArduinoCore -lm -Wl,-Map,Timertestnew.map,--cref -L"C:\Users\Akhil\workspace\Timertestnew" -mmcu=atmega328p
Finished building target: Timertestnew.elf

Create Flash image (ihex format)
avr-objcopy -R .eeprom -O ihex Timertestnew.elf  "Timertestnew.hex"
Finished building: Timertestnew.hex

Invoking: Print Size
avr-size --format=avr --mcu=atmega328p Timertestnew.elf
AVR Memory Usage
----------------
Device: atmega328p

Program:     620 bytes (1.9% Full)
(.text + .data + .bootloader)

Data:          9 bytes (0.4% Full)
(.data + .bss + .noinit)


Finished building: sizedummy


**** Build Finished ****

Вывод представления «Проблема»:

Description Resource    Path    Location    Type
Symbol 'EEARH' could not be resolved    main.cpp    /Timertestnew   line 15 Semantic Error

Возможно ли, что eclipse ide ошибочно показывает эту ошибку, пока хорошо ее компилирует?Как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Компилятор avr-gcc использует свой аргумент командной строки -mmcu, чтобы определить, какой файл заголовка ввода-вывода включить (и, следовательно, определить символьный регистр, включая регистр с высоким адресом EEARH EEPROM, о котором сообщается). Документация здесь .

Eclipse может не знать об этом определении символа препроцессора 'backdoor' (поскольку он, вероятно, использует другой компилятор для обнаружения проблем).Из вывода на консоль это выглядит так, как будто вам нужен файл заголовка ввода-вывода: avr/iom328p.h, который включается, когда определен символ препроцессора __AVR_ATmega328P__ ( см. Здесь ).Если вы предоставите этот символ Eclipse, он должен заставить его компилятор выбрать правильный файл и определить соответствующие регистры.

2 голосов
/ 12 января 2012

Попробуйте удалить этот маркер проблемы из ракурса проблем и перестроить ваш проект (целиком, а не просто пошагово). Если это решает проблему, то это просто было несовместимое состояние компилятора.

Однако, если это не решает проблему, то возможно, что редактор Eclipse использует другой анализатор (для поддержки содержимого и т. Д.), Который не может обработать то, что может сделать ваш компилятор. В этом случае я бы посмотрел настройки редактора C / C ++, связанные с ошибками, возможно, он отключен (однако я не программирую на C / C ++, поэтому не могу сказать, что искать).

...