Streaming "new line"

Arduino specifieke Software
Gebruikers-avatar
Berichten: 43
Geregistreerd: 09 Jan 2015, 15:09

Streaming "new line"

Berichtdoor hv0805 » 06 Feb 2015, 11:41

Hallo,
Ik kwam toevallig op een link terecht van "Streaming C++-style Output with Operator <<" Dit is een c++ manier om info naar de Serial output te sturen.
Bij de voorbeelden staat (en in c++ is dit normaal) << endl; voor het printen van een "newline".
Ik krijg er echter een foutmelding op " error: 'endl' was not declared in this scope".
Waarom krijg ik die fout? Kan ik eventueel endl vervangen door "\n" ?

En ik weet dat ik het kan uitproberen, maar ik weet graag waarom een fout zich voordoet.

Dank u

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Streaming "new line"

Berichtdoor nicoverduin » 06 Feb 2015, 11:53

die << en >> stammen al terug uit de begin jaren van C. en waren vooral bedoeld voor cout en cin en dat is weer console out en console in. C had (en toen zeker) een hele sterke verwevenheid met UNIX en dat was nog puur console werk (tegenwoordig trouwens nog steeds eigenlijk). Dat hij endl niet kent kan alleen maar betekenen dat zij niet gedefinieerd zijn in de Serial libraries of andere.
Je kan het wel zelf doen:
cpp code
#define endl '\n'

Maar ik denk dat het veel belangrijker is, dat je realiseert wat die boodschap is "Not in scope". Want die kan je overal krijgen en heeft te maken met de scoping van variabelen. M.a.w. waar is een variabele bekend of niet bekend. Hebben we te maken met global (programma niveau) of local(functie niveau), static, volatile of dynamisch...

zie: http://www.tutorialspoint.com/cplusplus ... _scope.htm
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4079
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Streaming "new line"

Berichtdoor shooter » 06 Feb 2015, 16:12

je kunt wel endl gebruiken maar dat is variabele of een define
bijv \n\r
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Streaming "new line"

Berichtdoor nicoverduin » 06 Feb 2015, 20:40

shooter schreef:je kunt wel endl gebruiken maar dat is variabele of een define
bijv \n\r
lijkt wel een echo :mrgreen:
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4079
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Streaming "new line"

Berichtdoor shooter » 06 Feb 2015, 22:40

sorry had het smorgens opgehaald en smiddags pas weggedaan
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 136
Geregistreerd: 06 Jun 2012, 15:45

Re: Streaming "new line"

Berichtdoor hmjswt » 03 Mrt 2015, 12:25

Hoi,

Ik gebruik deze streaming ook met veel plezier.
Alleen dat endl vond ik wat lastig te onthouden.
Ik heb er toen in het .h bestand het volgende van gemaakt:

enum _EndLineCode { nl };

En gebruik ik bijvoorbeeld:

Serial<<"1 = EEPROM Data"<<nl<<nl;

Werkt wel prettig...


Groet,
Henk Siewert

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: aadaxobemiro, ijobosubopu en 30 gasten