Arduino IDE 1.8.16, problem \

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
persika
EF Sponsor
Inlägg: 1349
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Arduino IDE 1.8.16, problem \

Inlägg av persika »

Jag har haft problem med kommentarer som innehåller tecknet "\".
Har fått felmeddelande, några rader längre ner:
"expected unqualified-id before 'if'"
Janson1
Inlägg: 1352
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: Arduino IDE 1.8.16, problem \

Inlägg av Janson1 »

"expected unqualified-id before 'if'"
Det är väl inte så enkelt att det är raden innan eller några rader innan som saknar nåt?
agehall
Inlägg: 427
Blev medlem: 12 augusti 2020, 19:27:54

Re: Arduino IDE 1.8.16, problem \

Inlägg av agehall »

Det borde inte vara det här som är problemet, men testa att använda \\ istället för \. Men om du vill att vi ska hjälpa dig och inte bara gissa, så får du nog posta koden någonstans.
persika
EF Sponsor
Inlägg: 1349
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Re: Arduino IDE 1.8.16, problem \

Inlägg av persika »

Anledningen till att jag använt \ i kommentar är att jag gör ett program för att styra luftluftvärmepump med IR-signal, på samma sätt som fjärrkontrollen. Så var det när jag ville skriva kommentar om luftriktning vänster-raktfram-höger // || \\ , det går ju så klart att lösa på annat sätt. Men i en kommentar borde man ju vara fri att skriva vad som helst.
Se förhandsprojekt här:
viewtopic.php?t=108526


Här har jag gjort ett exempel, tog ett färdigt blink-exempel och lade till lite.
Inte riktigt samma felmeddelande, men ett sånt problem jag också råkat på i detta sammanhang:

Kod: Markera allt


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);

  Serial.begin(9600);

}

// the loop function runs over and over again forever

void loop() {
  int a;
  a = 1;
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second

  if (a) // kommentar med \
    {
    Serial.println(a);
    }
}

Utskrift från kompilering:

Kod: Markera allt

[size=85]C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Per\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Per\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries P:\PROGRAM\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328old -vid-pid=1A86_7523 -ide-version=10816 -build-path C:\Users\Per\AppData\Local\Temp\arduino_build_570061 -warnings=all -build-cache C:\Users\Per\AppData\Local\Temp\arduino_cache_373535 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avrdude.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -verbose P:\PROGRAM\Arduino\Blink\Blink.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Per\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Per\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries P:\PROGRAM\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328old -vid-pid=1A86_7523 -ide-version=10816 -build-path C:\Users\Per\AppData\Local\Temp\arduino_build_570061 -warnings=all -build-cache C:\Users\Per\AppData\Local\Temp\arduino_cache_373535 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avrdude.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\Per\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -verbose P:\PROGRAM\Arduino\Blink\Blink.ino
Using board 'nano' from platform in folder: C:\Users\Per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Using core 'arduino' from platform in folder: C:\Users\Per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Detecting libraries used...
"C:\\Users\\Per\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10816 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\Per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\Per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\eightanaloginputs" "C:\\Users\\Per\\AppData\\Local\\Temp\\arduino_build_570061\\sketch\\Blink.ino.cpp" -o nul
Generating function prototypes...
"C:\\Users\\Per\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10816 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\Per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\Per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\eightanaloginputs" "C:\\Users\\Per\\AppData\\Local\\Temp\\arduino_build_570061\\sketch\\Blink.ino.cpp" -o "C:\\Users\\Per\\AppData\\Local\\Temp\\arduino_build_570061\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\Per\\AppData\\Local\\Temp\\arduino_build_570061\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Kompilerar skiss...
"C:\\Users\\Per\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10816 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Users\\Per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\Per\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\eightanaloginputs" "C:\\Users\\Per\\AppData\\Local\\Temp\\arduino_build_570061\\sketch\\Blink.ino.cpp" -o "C:\\Users\\Per\\AppData\\Local\\Temp\\arduino_build_570061\\sketch\\Blink.ino.cpp.o"
P:\PROGRAM\Arduino\Blink\Blink.ino:21:10: warning: multi-line comment [-Wcomment]
   if (a) // kommentar med \
          ^
Blink:26:1: error: expected declaration before '}' token
 }
 ^
exit status 1
expected declaration before '}' token
[/size]
Användarvisningsbild
rvl
Inlägg: 5815
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Arduino IDE 1.8.16, problem \

Inlägg av rvl »

Ja, i kommentarer borde man få skriva vad som helst.

Kan problemet kringås, ifall \-tecknet inte är sist på raden? Felmeddelandet säger multi-line, vilket lutar mot att tecknet tar med nästa rad, så som när man bryter ned en lång kodrad i flera rader.
Användarvisningsbild
hawkan
Inlägg: 2636
Blev medlem: 14 augusti 2011, 10:27:40

Re: Arduino IDE 1.8.16, problem \

Inlägg av hawkan »

Ja säkert så drar den med { på nästa rad i kommentaren. Tack var att \ står sist på raden, så att \n blir del av kommentaren.
agehall
Inlägg: 427
Blev medlem: 12 augusti 2020, 19:27:54

Re: Arduino IDE 1.8.16, problem \

Inlägg av agehall »

Hur gör Arduino nuförtiden - kör de preprocessning för att skapa en enda stor kompileringsenhet?

Kör med /* */ kommentarer så skulle jag tro att det fungerar. Jag kan inte se varför det där skulle bli fel i vanlig C/C++ men så fort Arduino varit inne och kladdat i processen kan vad som helst hända. Det är en av anledningarna till att jag inte tar i Arduinos mjukvarusystem med tång.
Användarvisningsbild
hawkan
Inlägg: 2636
Blev medlem: 14 augusti 2011, 10:27:40

Re: Arduino IDE 1.8.16, problem \

Inlägg av hawkan »

Ja vad jag vet så buntar arduino ihop det och kompilerar. Det finns en del tråkiga effekter av det, t ex med typdeklarationer som ordningen kan haka upp sej med.

Jag har kört platformio en del på sistone och testade \ i slutet på raden. Blir samma fel där. Är nog gcc-s preprocessor som gör så. Säkert enligt någon standard men men.

För övrigt kör jag gärna Arduinos ide när det gäller små grejor, ta ett exempel och bygga vidare på. Man slipper massa inställningar, bara att koda, ladda upp och köra.

Men platformio har definitivt trevliga saker när det gäller lite större saker, flera filer, osv. Och debugger om man har en processor som stöder det. Jag har använt debugger på esp32 och stm32f4 och i vissa situationer är det ovärderligt, riktigt glad blir man då.
Användarvisningsbild
rvl
Inlägg: 5815
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Arduino IDE 1.8.16, problem \

Inlägg av rvl »

Det är antagligen helt standardenligt. Testade med VSC, som visar hur det kommer att gå, redan innan man kompilerar.
VSC_mlc.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Arduino IDE 1.8.16, problem \

Inlägg av Icecap »

Jag menar att \ i slutet av en rad är definierad till att betyda multi-rad.

Men kommentaren kunde ju vara <\>, <|> eller </>
persika
EF Sponsor
Inlägg: 1349
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Re: Arduino IDE 1.8.16, problem \

Inlägg av persika »

Jag har nu testat att sätta \ sist på en kommentars rad i MPLAB X, XC8.
Får ungefär samma felmeddelande där.

Så det är multiline-kommentar då, men jag har inte visst om det tidigare och är det nån finnés med det?
// och /* */ funkar ju bra.

Lite skeptisk till Arduino IDE, hade ett märkligt fel tidigare, där det gick att komma förbi det med en tom kommentar.
Se:
viewtopic.php?p=1774750#p1774750
Skriv svar