Tag Archives: C++

1337 programming skillz

1. Depui CV-u’ la o firmă de programare

2. Când ești contactat ți se menționează că:

  • vei da un test practic de programare în C++
  • testul va consta în o problemă care va folosi următoarele noțiuni: clase derivate și liste; nimic mai mult sau mai puțin – deci ai ști ce să recapitulezi

3. Stabilești data undeva nu ziua următoare, ci peste câteva zile

4. Ajungi la interviu și ți se pune la dispoziție MSDN-u’ (Microsoft Developement Network) care este un fel de help mai vast unde ți se arată funcții, ce fac, cum se folosesc, ce parametri iau etc.

5. Te pui la calculator și nu faci nimic

Și acum mă-ntreb ce-o fi în capu’ oamenilor ăstora?! Au dispus de toate datele necesare ca să treacă de testu’ practic și totuși au fost varză. Uneori când îi întrebi care-i faza îți răspund “păi n-am mai programat în C++ de nu știu când”. Ce, mă!?!? Și nu sunt colegi de-ai mei de la Româno-Americană. Nuuu. Sunt oameni care au mâncat și/sau mănâncă programare pe pâine – Informatică la Universitate și Automatică. Can I hear a FAIL?

P.S. Ce tare, ăsta este postu’ nr. 200! Happy Anniversary to me!

[Coketorial C++] macro: transform the parameter into a string

A while ago I wanted to create a macro that would transform the parameter intr-o a character string, something like:

CString strString = MACRO(666;puppies); // => strString = “666;puppies”

I wanted to do so because I was going to create another, more complex macro that would declare/define some functions for classes, without having to take time for each class and implementing the functions manually. Well, that’s how I found out that in order to transform a macro’s parameter into a character string, you need, in fact, 2 macros, as follows:

#define Intermediary(parameter) #parameter
#define StringMachine(anyparameter) Intermediary(anyparameter)

That simple. That’s how I moved on and created another macro that would create a function that returned the class’s name:

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

Now I’m using this macro inside each class in order to be able to get at any time the name of the class. Something like:

class ClassName

{

DEFINE_CLASS(className)

}

, a thing that makes my work a lot easier because I only have to write 3 words instead of tens (depends on the complexity of the DEFINE_CLASS macro).

For the program to work (if you use CString, that is) you must also include atlstr.h. For more information about CString go here.

If you have questions, don’t hestitate to post a comment.

[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.