"Fel Kommando! Använd enbart 'Start' eller 'Stop'."
Ifall det nu var avsett som ett meddelande till en användare...
Re: Blandade C++ frågor, nybörjarnivå
Postat: 10 februari 2016, 15:36:04
av Magnus_K
lillahuset skrev:Boolen kanske är definierad som int.
Vad har du valt för nivå på varningar. Är det gcc så bör du välja minst "-Wall".
Det ska jag kolla upp!
Ska också försöka hitta vart boolen är definierad.
@sodjan:
Är du klar med det här nu?
Re: Blandade C++ frågor, nybörjarnivå
Postat: 10 februari 2016, 16:22:20
av sodjan
Ja, *jag* är klar. Tydlighet mot användare är en väldigt viktig fråga.
> Själv tycker jag det känns bakvänt att skriva if(0 == startCmd)...
Håller helt med. Det är mest en "quick-fix" för att undvika en
av dumheterna i C. Det vore enklare om man helt enkelt inte
tillåter tilldelning (=) inom if-villkor. Men nu så är det ju som
det är med det...
Re: Blandade C++ frågor, nybörjarnivå
Postat: 10 februari 2016, 17:08:13
av Jan Almqvist
Just denna "dumheten" kan nog användas lite var som helst...
{
a == b; // jämförelse men resultatet används inte
a = b; // tilldelning
}
Re: Blandade C++ frågor, nybörjarnivå
Postat: 10 februari 2016, 17:30:24
av Icecap
Ibland ska man spara värdet av en funktion till senare samtidig som man ska kolla den och då kan man skriva:
if((Result = SomeFunction()) > 10)
{
}
Då får Result värdet av funktionen och if-satsen uppfylls om det värde är större än 10.
Men rent läsningsmässigt är det inte enkelt om det finns många av sådana rader och jag tror inte att det är synnerligt med effektivt än att skriva det i två rader där den första tilldelar värdet till Result och sedan kollar om Result är större än 10.
Re: Blandade C++ frågor, nybörjarnivå
Postat: 10 februari 2016, 17:40:21
av Jan Almqvist
men den här är inte lika självklar att dela i två...
Det går fort att lära sig C, men att bemästra det tar lite mer tid. Lite som schack
(Förklaring av programmet ovan:
När man kör ett c-program från en terminal ("dos-prompt") så skriver man binärens namn, typiskt:
# mittprogram
Man kan skicka in parametrar genom att lista dem efteråt t.ex.
# mittprogram param1 param2
Dessa strängar ("param1" och "param2") kommer man åt via arrayen argv[1] och argv[2].
argc kommer att innehålla siffran 3.
Varför tre säger ni då? Det är ju bara två parametrar och vad ligger egentligen i argv[0] ?
Jo namnet på binären! "mittprogram"
MVH: Mikael
Re: Blandade C++ frågor, nybörjarnivå
Postat: 11 februari 2016, 07:26:55
av Icecap
C är ett starkt språk - på alla sätt och vis. Man kan göra bra program - men man kan även göra dunderfel som kan vara mycket svåra att hitta.
Det är därför att det finns en massa regler för hur man bör skriva program, vilka saker man ska undvika osv.
Re: Blandade C++ frågor, nybörjarnivå
Postat: 11 februari 2016, 08:34:14
av pbgp
Jag tycker Linus Thorvalds sätter huvudet på spiken:
Some people seem to think that C is a real programming language, but they are sadly mistaken. It really is about writing almost-portable assembly language.
Det här var lite kul också:
Re: Blandade C++ frågor, nybörjarnivå
Postat: 11 februari 2016, 16:34:05
av lillahuset
Eftersom jag är rätt förtjust i assembler är det inte så konstigt att jag gillar C också.
Edit: Jo jag är lite som Linus, gillar också hårdvarunära programmering. Inga andra jämförelser.
Re: Blandade C++ frågor, nybörjarnivå
Postat: 11 februari 2016, 17:20:21
av Magnus_K
@lillahuset: -Wall användes redan
Mr Andersson skrev: Nej du får ingen varning eftersom variablerna med samma namn ligger i olika scope och det är lagligt att gömma variabler. Jag gissar att Atmel Studio använder gcc som kompilator och då kan du slå på varningar med '-Wshadow'.
Fann till slut vart jag kunde slå på den här funktionen och det fungerar ju kanon
En liten följdfråga: vad är det egentligen den varnar om nu? Varningen lyder: Warning declaration of 'showData' shadows a global declaration [-Wshadow]
showData är mycket riktigt en global variabel men den hänvisar till doButtonDebounce() nedan. Testade att skriva ShowOnDisplay showData inom parantesen men då får jag error på showData++ istället.
Kanske ska ignorera alla varningar i nuläget och rensa sånt här när programmet börjar bli klart istället?