Makrot ovat kuitenkin hyvin vaarallisia huolimattomasti käytettynä:
#define K_2(i) (i + i) ... a = K_2(4); - > a = (4 + 4); a = K_2(n++); - > a = (n++ + n++); /* !!!!!!!!!! */
Onneksi C++:ssa ei enää tarvita niin paljon parametrillisiä makroja kuin puhtaassa C:ssä. Sama asia voidaan useimmiten hoitaa inline- funktiolla:
inline int k_2(int i) { return (i + i); } ... a = k_2(4); - > a = 8; a = k_2(n++); - > a = 2*n; n++; // Toimii oikein!