Sida 1 av 1

Arduino IDE 1.8.16, problem \

Postat: 5 januari 2024, 09:02:47
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'"

Re: Arduino IDE 1.8.16, problem \

Postat: 5 januari 2024, 09:08:36
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?

Re: Arduino IDE 1.8.16, problem \

Postat: 5 januari 2024, 09:24:17
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.

Re: Arduino IDE 1.8.16, problem \

Postat: 5 januari 2024, 14:10:11
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]

Re: Arduino IDE 1.8.16, problem \

Postat: 5 januari 2024, 14:24:04
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.

Re: Arduino IDE 1.8.16, problem \

Postat: 5 januari 2024, 14:26:19
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.

Re: Arduino IDE 1.8.16, problem \

Postat: 5 januari 2024, 21:38:22
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.

Re: Arduino IDE 1.8.16, problem \

Postat: 5 januari 2024, 21:46:39
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å.

Re: Arduino IDE 1.8.16, problem \

Postat: 6 januari 2024, 00:25:19
av rvl
Det är antagligen helt standardenligt. Testade med VSC, som visar hur det kommer att gå, redan innan man kompilerar.
VSC_mlc.png

Re: Arduino IDE 1.8.16, problem \

Postat: 6 januari 2024, 09:59:06
av Icecap
Jag menar att \ i slutet av en rad är definierad till att betyda multi-rad.

Men kommentaren kunde ju vara <\>, <|> eller </>

Re: Arduino IDE 1.8.16, problem \

Postat: 6 januari 2024, 18:26:46
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