Re: Formátovaný tisk bylo Re: sprintf - co delam blbe?

Jan Waclawek konfera na efton.sk
Středa Duben 17 13:57:55 CEST 2024


>Anonymní String se 
>instancuje voláním konstruktoru String(const char *cstr = ""). To je 
>v±e. 

OK, viacmenej rozumiem, aj ked asi mi este nejake detaily unikaju, ale to
nie je dolezite. Dolezite je, ze:

> Ano, překladač přeuspořádá zásobník, 

To som necakal, a skutocne to mnohe vysvetluje. 

>ale 
>nemusíte se o to starat

No, musim, nemusim. Nemusim, ak mam nekonecne vela pamate a nekonecne vela
casu. Bavime sa o mcu, cize musim.

Mojej otazke, ktora bola na 

>>> Jde to sice takhle dělat i v čistém C, ale není to zvykem.

ste sa vyhli, ale asi nie nahodou :-)

wek


----- Original Message ---------------
>Mě zmátlo, µe z toho tak jak to bylo napsané
>String fnc (...) {
>   char buf [11];
>   // ...
>   return buf;
>}
>není jasné, co to vlastně vrací. Pokud bych napsal
>   return String(buf);
>nemusel bych koukat do zdrojáků a bylo by to stejné. Anonymní String se 
>instancuje voláním konstruktoru String(const char *cstr = ""). To je 
>v±e. Ano, překladač přeuspořádá zásobník, je to dost brutální, ale 
>nemusíte se o to starat, dále se pak pracuje s kopií a její platnost 
>končí na konci bloku, kde se pouµívá.
>Jakýkoli String v C++ je hrůza a je lep±í se tomu pokud moµno vyhnout.
>
>Mrazík
>
>
>On 17. 04. 24 12:29, Jan Waclawek wrote:
>>> Arduino nepouµívám, takµe mi také není jasné jak to přesně funguje, ale
>> 
>> No ved je k dispozicii kompletna dokuemntacia.. ;-)
>> https://github.com/arduino/ArduinoCore-API/blob/master/api/String.h
>> https://github.com/arduino/ArduinoCore-API/blob/master/api/String.cpp
>> 
>> Ale bez ohladu na to, kedze C++ nepouzivam a nepoznam, tak mi nie je jasne,
>> ako a kedy sa ten anonymny objekt, ktory je nasledkom pouzitia triedy ako
>> navratoveho typu, instancuje; resp. co je na zasobniku v akom poradi a
>> akym sposobom a v ktorom okamihu sa tam ten buffer prenesie.
>> 
>> Zaujima ma to preto, lebo toto je dost casty problem, kde by som chcel, aby
>> nejaku pamat alokovala "leaf" funkcia a aby sa po jej "pouziti"
>> automaticky ta pamat dealokovala. Tak ma zaujima, ako to ten C++ skutocne
>> robi.
>> 
>>> Jde to sice takhle dělat i v čistém C, ale není to zvykem.
>> 
>> Neviem, ako by som v cistom C zabezpecil zivotnost toho buffra dlhsie ako
>> je koniec funkcie, v ktorom bol definovany, a ako by som zabezpecil, aby
>> po pouziti bol ten buffer "dealokovany". V asm si viem predstavit, ze by
>> som pri navrate z tej funkcie preusporiadal zasobnik, ale pripada mi to
>> dost brutalne.
>> 
>> wek



Další informace o konferenci Hw-list