Mutta entäpä jos haluaisimme käyttää toisen nimistä muuttujaa. Määriteltäisiinkö uusi makro? Onneksi C- kielen esiprosessori sallii parametrin käytön makroissa. Siispä voimme rakentaa vaikkapa makron ( N_S, name and size )
#define N_S(nimi) nimi,sizeof(nimi)
jonka esiintymän esiprosessori muuttaa vastaavasti
char jono[80],elain[20]; f_lue_jono(f,N_S(jono)); kopioi_jono(N_S(elain),"Kissa"); cin.getline(N_S(jono)); esiprosessori ==> f_lue_jono(f,jono,sizeof(jono)); kopioi_jono(elain,sizeof(elain),"Kissa"); cin.getline(jono,sizeof(jono)); kääntäjä ==> f_lue_jono(f,jono,80); kopioi_jono(elain,20,"Kissa"); cin.getline(jono,80);
Siis makron parametrilistassa olevat sanat korvataan ensin niillä sanoilla jotka ovat makron esiintymässä. Tämän jälkeen esiintymä korvataan tällä uudella merkkijonolla ja lopulta korvattu merkkijono annetaan kääntäjän käsiteltäväksi.