Skocz do zawartości

Eclipse photon - upierdliwy syntax error


_LM_

Pomocna odpowiedź

Taki prosty kod:

#include <avr/io.h>
#include <avr/pgmspace.h>

const __flash char tab[] = "test";

int main(void)
{
	for(;;);
}

Kompiluje się ekstra, ale w edytorze mam wciąż błąd składni który nawet nie jest opisany:

eclipse_veC96joaj3.thumb.png.2ad8785b4cefa3a899dcf2c3e0105161.png

Zaś konsolka jest czysta

22:01:15 **** Incremental Build of configuration Release for project constFlasz ****
make all 
'Building file: ../main.c'
'Invoking: AVR Compiler'
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega16 -DF_CPU=1000000UL -MMD -MP -MF"main.d" -MT"main.o" -c -o "main.o" "../main.c"
'Finished building: ../main.c'
' '
'Building target: constFlasz.elf'
'Invoking: AVR C Linker'
avr-gcc -Wl,-Map,constFlasz.map -mmcu=atmega16 -o "constFlasz.elf"  ./main.o   
'Finished building target: constFlasz.elf'
' '
'Invoking: AVR Create Extended Listing'
avr-objdump -h -S constFlasz.elf  >"constFlasz.lss"
'Finished building: constFlasz.lss'
' '
'Create Flash image (ihex format)'
avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex constFlasz.elf  "constFlasz.hex"
'Finished building: constFlasz.hex'
' '
'Create eeprom image (ihex format)'
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex constFlasz.elf  "constFlasz.eep"
'Finished building: constFlasz.eep'
' '
'Invoking: Print Size'
avr-size --format=avr --mcu=atmega16 constFlasz.elf
AVR Memory Usage
----------------
Device: atmega16

Program:     114 bytes (0.7% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)


'Finished building: sizedummy'
' '

22:01:16 Build Finished. 0 errors, 0 warnings. (took 1s.344ms)

Ma ktoś pomysł jak wyłączyć tego syntaxa?

 

 

Link do komentarza
Share on other sites

Nie mam Eclipse, ale może zadziała sztuczka z wirutalnymi makrami?

Robisz makro, które rozwija się do czegoś, co w danym miejscu jest dozwolone, ale nie wpływa na kod. Umieszczasz je w specjalnym pliku nagłówkowym, co by móc je wyłączyć w kompilacji (oczywiście w IntelliSense musi działać).

Wtedy IntelliSense powinien podłapać, że jest to makro i je rozwinąć, a kompilator zignorować i przetworzyć właściwy atrybut.

Edytowano przez H1M4W4R1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

No 🙂 to był ten moment że wiedziałem że gdzieś jest rozwiązanie ale nie mogłem skojarzyć gdzie. Niestety to wygenerowało mi inne problemy związane ze wskaźnikami we flash. Ale to jak już wyczerpią się wszystkie możliwości będę pytał. 

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.