Przykład użytecznego makro, dla początkujących

Ostatnio jak pisałem na temat zamiany dwóch liczb, pokazałem i opisałem makro SWAP, które może odstraszać ludzi którzy zaczynają w C. A przecież makra są ważnym elementem języka C.

Dzisiaj przedstawię makro które wypisuje za pomocą printf:

nazwa_zmiennej = wartość_zmiennej

Proste. Moje rozwiązanie problemu wygląda tak:

#define PVAR(p,v) 
printf("%s = " p "n" ,#v,v)

/* Sposób użycia */
int a=42;
float b=3.64521;
char c = 'c';
char* d = "abcdef";

PVAR("%d",a);
PVAR("%.2f",b);
PVAR("%c",c);
PVAR("%s",d);
/*Wynik działania*/
a = 42
b = 3.65
c = c
d = abcdef

#define określa punkt zaczęcia się makra. Po spacji następuje nazwa makra, u mnie PVAR, potem nawiasach p i v określają nazwy paramentów makra. Następnie występuje backslash ’’ który powoduje że można makro napisać w dwóch liniach.

Pierwszy argument printf wygląda tak: „%s = ” p „n”

  • %s – jest miejscem wypisania nazwy zmiennej
  • p – jest to pierwszy parametr wpisany do makra, jako że jest łańcuchem sam się połączy z łańcuchami sąsiadującymi.

Ostatnimi argumentami funkcji printf są:

  • #v – v to drugi argument makra który jest zmienną. Podanie # przed v powoduje, że to co zostało podane w jako v jest umieszczone w cudzysłowie. Wartość #v jest umieszczone w miejsce %s
  • v – v to drugi argument makra który jest zmienną. Jest dopasowany do punktu podanego w p