Virheenkorjauksen ja analogisten nastoja koskevien ristiriitaisten ilmoitusten jälkeen ajattelin lopulta, että se oli tehty, käännöksen jälkeen sain tämän virheen:

32:0, 1: 31:12: error: expected unqualified-id before numeric constant 2:5: note: in expansion of macro "B1" 

En voi ymmärtää, mitä tämä tarkoittaa. Mitä väärää koodini täällä on?

// don"t judge me if it"s too long and overcomplicated :P I"m still new xD int AA1 = 0; int B1 = 1; int C1 = 2; int D1 = 3; int AA2 = 4; int B2 = 5; int C2 = 6; int AA3 = 8; int B3 = 9; int C3 = 10; int D3 = 11; int B4 = 12; int C4 = 13; int sec = 0; int min1 = 0; int min2 = 0; int hour1 = 8; bool hour2 = 0; void setup() { pinMode(AA1, OUTPUT); pinMode(B1, OUTPUT); pinMode(C1, OUTPUT); pinMode(D1, OUTPUT); pinMode(AA2, OUTPUT); pinMode(B2, OUTPUT); pinMode(C2, OUTPUT); pinMode(AA3, OUTPUT); pinMode(B3, OUTPUT); pinMode(C3, OUTPUT); pinMode(D3, OUTPUT); pinMode(B4, OUTPUT); pinMode(C4, OUTPUT); } void loop() { OutputOn(); delay(1000); sec++; if(sec == 60) { sec = 0; min1++; if(min1 == 10) { min1 = 0; min2++; if(min2 == 6) { min2 = 0; hour1++; if(hour1 == 10) { hour1 = 0; hour2 = 1; } if(hour2 == 1, hour1 == 3) { hour1 = 1; hour2 = 0; } } } } } void OutputOn() { digitalWrite(B1, LOW); digitalWrite(C1, LOW); digitalWrite(D1, LOW); digitalWrite(A2, LOW); digitalWrite(B2, LOW); digitalWrite(C2, LOW); digitalWrite(A3, LOW); digitalWrite(B3, LOW); digitalWrite(C3, LOW); digitalWrite(D3, LOW); digitalWrite(B4, LOW); digitalWrite(C4, LOW); if(min1 == 1) { digitalWrite(AA1, HIGH); } if(min1 == 2) { digitalWrite(B1, HIGH); } if(min1 == 3) { digitalWrite(B1, HIGH); digitalWrite(AA1, HIGH); } if(min1 == 4) { digitalWrite(C1, HIGH); } if(min1 == 5) { digitalWrite(C1, HIGH); digitalWrite(AA1, HIGH); } if(min1 == 6) { digitalWrite(D1, HIGH); digitalWrite(B1, HIGH); } if(min1 == 7) { digitalWrite(D1, HIGH); digitalWrite(AA1, HIGH); digitalWrite(B1, HIGH); } if(min1 == 8) { digitalWrite(D1, HIGH); } if(min1 == 9) { digitalWrite(D1, HIGH); digitalWrite(AA1, HIGH); } if(min2 == 1) { digitalWrite(AA2, HIGH); } if(min2 == 2) { digitalWrite(B2, HIGH); } if(min2 == 3) { digitalWrite(B2, HIGH); digitalWrite(AA1, HIGH); } if(min2 == 4) { digitalWrite(C2, HIGH); } if(min2 == 5) { digitalWrite(C2, HIGH); digitalWrite(A2, HIGH); } if(min2 == 6) { digitalWrite(C2, HIGH); digitalWrite(B2, HIGH); } if(hour1 == 1) { digitalWrite(AA3, HIGH); } if(hour1 == 2) { digitalWrite(B3, HIGH); } if(hour1 == 3) { digitalWrite(B3, HIGH); digitalWrite(AA3, HIGH); } if(hour1 == 4) { digitalWrite(C3, HIGH); } if(hour1 == 5) { digitalWrite(C3, HIGH); digitalWrite(AA3, HIGH); } if(hour1 == 6) { digitalWrite(C3, HIGH); digitalWrite(B3, HIGH); } if(hour1 == 7) { digitalWrite(C3, HIGH); digitalWrite(AA3, HIGH); digitalWrite(B3, HIGH); } if(hour1 == 8) { digitalWrite(D3, HIGH); } if(hour1 == 9) { digitalWrite(D3, HIGH); digitalWrite(C3, HIGH); } if(hour2 == 1) { digitalWrite(B4, HIGH); digitalWrite(C4, HIGH); } } 

Sen oletetaan olevan koodia kellolle (jos se ei ollut tarpeeksi ilmeinen), joka on kytketty 4 7-segmenttiseen dekooderiin, jotka on myös kytketty 4 7-segmenttiseen LED-näyttöön.

Kommentit

  • Yleensä kirjoitettaessa C-muodossa ”makron” pitäisi olla iso vihje siitä, että sinulla on ongelmia, jotka liittyvät #define . Bizzare-virheet sanomalla asioita, joita et ole kirjoittanut: ongelma, johon liittyy #define.

Vastaa

Onnea. Arduinossa on tiedosto nimeltä ”binary.h”, ja se sisältää määritelmän nimeltä ”B1”. Tämä tarkoittaa, että et voi käyttää ”B1” -muuttujaa. Mielestäni tiedosto ”binary.h” on täysin tarpeeton.

Asetuksissa voit kytkeä kääntäjälle ylimääräisen lähdön ja kytkeä rivinumerot päälle. Kääntäjä kertoo mikä on vialla, mutta sinun on tiedettävä miten kääntäjä tekee sen. Ensimmäinen kääntäjävirhe on tärkein.

… / hardware / arduino / avr / cores / arduino / binary.h: 31: 12: virhe: odotettu unqualified-id ennen numeerista vakio #define B1 1 tarkoittaa, että kääntäjä luki tiedostoa ”binary.h” ja rivillä 31 huomasi jotain, jota hän ei ymmärtänyt, ja että se liittyy ”B1”: ään.

Kommentit

  • Joten minun ei tarvitse käyttää B1: tä?
  • Oikea. Johtavaa B: tä, jossa on 0 ' s ja 1 ' s, käytetään binäärivakioihin: arduino.cc/en/Reference/IntegerConstants Koska kyseessä on pin-numero, voit soittaa muuttujalle " const B1Pin = 1; " tai jopa " const TheyToldMeAtStackExchangeNotToCallThisB1 = 1; "
  • I ment: " const int B1Pin = 1; ". Anteeksi, unohdin ' int '. Avainsanaa ' const ' ei tarvita, se kertoo kääntäjälle, että se on vakionumero eikä muutu.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *