/*
 * max-makro.c
 *
 * Maximum zweier Zahlen als Makro statt Funktion
 *
 * Autor: H.Drachenfels
 * Erstellt am: 27.10.2023
 */

#include <stdio.h>

//#define max(a, b) a > b ? a : b   // falsch, Ausdruck klammern!
//#define max(a, b) (a > b ? a : b) // falsch, Parameterverwendung klammern!
#define max(a, b) ((a) > (b) ? (a) : (b)) // richtig, aber Mehrfachbewertung von a und b

int main(void)
{
    int value = 2 * max(7, 8 | 9); // bei Makros Ausdruecke als Argument vermeiden!
    printf("2 * max(%d, %d) = %d\n", 7, 8 | 9, value);
}

