Съставяне на макроси

Макросите се съставят като се използва ключовата дума #define и приличат на функциите, но не изискват обръщение към функция, а директно се вмъкват в кода. Типичен пример за макрос е даден по долу:

#define max(a, b) ((a) > (b) ? (a) : (b))

Използването на макроси има много недостатъци и употребата им често допринася за трудно откриваеми бъгове. Ако използваме горния макрос по следния начин

max(++a, b)
променливата а ще бъде увеличена два пъти, а това не е желателно.