2012-01-12 7 views
3

でコンソール出力がエラーを示していますEclipseは正しくコンパイルが、「問題」ビュー

**** 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

問題のビューからその問題マーカーを削除して、プロジェクトを再構築してください(インクリメンタルではありません)。問題が修正された場合は、単にコンパイラの状態が一貫していないことになります。

ただし、問題が解決しない場合は、Eclipseエディタでコンパイラが処理できる別のパーサー(コンテンツ補助など)を使用する可能性があります。この場合、エラーに関するC/C++エディタの設定を見ていますが、おそらくそれはオフになっているかもしれません(しかし、私はC/C++をプログラムしないので、何を探すべきかを教えてくれません)。

2

avr-gccコンパイラは、-mmcuコマンドライン引数を使用して、含めるIOヘッダーファイルを決定します(したがって、報告されるEEARH EEPROM上位アドレスレジスタを含むシンボリックレジスタ定義)。 Documentation here

Eclipseは、この「バックドア」プリプロセッサシンボル定義(問題検出に別のコンパイラを使用している可能性が高いため)を認識していない可能性があります。コンソール出力からは、必要なIOヘッダーファイルがにあります。これは、__AVR_ATmega328P__プリプロセッサーシンボルが定義されている場合(see here)に含まれています。avr/iom328p.hです。このシンボルをEclipseに提供すると、コンパイラは正しいファイルを取り出し、関連するレジスタを定義しなければなりません。

関連する問題