Tag Archives: tutorial

[Coketorial C++] macro: transforma parametrul intr-un string

Deoarece blogu’ nu poate sau nu ar trebui să poată să interpreteze C++ voi aborda un subiect din această ramură.

Acum ceva vreme am vrut să fac un macro care să transforme parametrul într-un șir de caractere, ceva de genu:

CString strString = MACRO(666;de;cățeluși); // => strString = “666;de;cățeluși”

Doream să fac asta deoarece urma să fac un macro mai mare care să declare/definească niște funcții pentru fiecare clasă pe care urma să o creez, ca să nu stau în dreptul fiecăreia și să scriu de fiecare dată funcțiile în mod personalizat. Bun, astfel am descoperit că pentru a transforma un parametru al unui macro într-un șir de caractere îți tre’, de fapt, două macro-uri, și anume:

#define Intermediar(parametru) #parametru
#define StringMachine(oriceparametru) Intermediar(oriceparametru)

Atât de simplu. Astfel am reușit să fac un macro ca pentru fiecare clasă să-mi creeze o funcție care să-mi returneze numele acesteia:

#define DEFINE_CLASS(className) public:
virtual CString name() const { return StringMachine(className); };

Acum folosesc acest macro în cadrul fiecărei clase pentru a avea la îndemână oricând numele acesteia. Ceva de genu’:

class NumeleClasei

{

DEFINE_CLASS(NumeleClasei)

}

, lucru care îmi ușurează munca deoarece trebuie să scriu doar 3 cuvinte în loc de zeci (depinde de complexitatea macro-ului DEFINE_CLASS).

Pentru ca programul să meargă (asta dacă folosești CString) tre’ să incluzi și fișierul atlstr.h. Pentru mai multe informații despre CString intră aici.

Dacă ai întrebări, nu ezita să postezi un comment.