Permalänk
Medlem

Praktiska makron i C++

Är det någon mer än jag som använder sådana här makron?

// This macro creates a standard stl for loop: #define stl_loop(type, name) \ for (##type::iterator iter = (##name).begin(); iter != (##name).end(); ++iter) // Same thing but with const_iterator: #define stl_const_loop(type, name) \ for (##type::const_iterator iter = (##name).begin(); iter != (##name).end(); ++iter) // Usage: void example(const std::vector<std::string>& vec) { std::string result; stl_const_loop(std::vector<std::string>, vec) result += (*iter); }

Jag minns en gång då jag kodade på mitt ganska stora projekt att jag bara blev så spyless att skriva ut fullständiga for-loopar. Jag kan förstå att det kan te sig kryptiskt att se ett sånt där makro mitt i en funktion om man inte har sett det förut, men det kanske inte är alltför ondskefullt om man har det som konvention i sitt projekt.

Visa signatur

(http://rivfader.blogspot.com)
Blank face in the windowpane
Made clear in seconds of light

Permalänk
Medlem

Brukar inte använda mig av sådana makron, tycker det kan bli lite svårtläst kod då! Men visst, det har ju sina fördelar. Har man bara en bra IDE och använder sig av mycket code-completion så går det ganska fort att skriva såna loopar!

Visa signatur

5D MkII

Permalänk
Medlem

Jag använder mig inte av sånna makron, nej. Tycker det är mer svårtläst och knappt någon mindre kod. Sen loopar jag inte igenom STL grejjer allt för ofta.

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.

Permalänk
Medlem

Själv brukar jag använda mig av en typedef, makron suger pung

typedef std::list<Object *>::iterator listiter;

och sen t.ex.

for(listiter i = enemylist.begin(); i!=enemylist.end(); ++i)
delete *i;

Visa signatur

Speldator: Ryzen 7800X3D, 64GB DDR5, RTX 3070
Server: i7-8700k, 32GB DDR4, RTX2080
Steam deck + de fiesta konsoller.

Permalänk
Medlem

jag avänder mig av en del sådana makron....
många tycker att macron bara förstör språket, men ibland kan du spara en hel del kod och kraft på snygga macron....

Det finns även hel del saker som inte går att göra utan macron... Som en del typer av loggning av olika slag... Jag har själv en minneshanterare som använder sig en hel del av macron, som håller koll på alla dina create / destroys...

men jag har aldrig förut tänkt tanken att ha macros till att förkorta mina stl-loopar menee... blev kanske lite sugen på att börja med nåt sånt