V jazyku C lze definovat tzv. makra. Syntax je

makro

Můžeme definovat například konstantu PI.

#include <stdio.h>

#define PI 3.14

double vrat_obvod_kruhu(double polomer) {
    return 2 * PI * polomer;
}

int main()
{
    double obvod = vrat_obvod_kruhu(2.5);

    printf("Obvod je %lf\n", obvod);

    return 0;
}

Makra dokážou definovat i IF strukturu ve formátu

#if podminka
    // kod
#elif podminka
    // kod
#else
    // kod
#endif

Ukázka může být například tisk podle nastavení konstanty.

#include <stdio.h>

#define TISK_AHOJ 1
#define TISK_NAZDAR 0

int main()
{
    #if TISK_AHOJ
        printf("Ahoj\n");
    #elif TISK_NAZDAR
        printf("Nazdar\n");
    #else
        printf("Zdravim\n");
    #endif

    return 0;
}

Když program spustíme, tak se nám vytiskne

Ahoj

Konstanta v podmínce nemusí být definovaná (pak se vyhodnotí jako nepravda).

#include <stdio.h>

#define TISK_NAZDAR 1

int main()
{
    #if TISK_AHOJ
        printf("Ahoj\n");
    #elif TISK_NAZDAR
        printf("Nazdar\n");
    #else
        printf("Zdravim\n");
    #endif

    return 0;
}

Zde se vytiskne

Nazdar

Pokud by obě konstanty byly nastavené na 0 nebo nebyly vůbec definované, tak by se nám vytisklo

Zdravim

Podobně funguje

  • #ifdef - pokud je definováno
  • #ifndef - pokud není definováno
  • #elifdef - else if definováno
  • #elifndef - else if není definováno

Pomocí makra lze definovat i funkce. Všimněme si, že v makru definujeme proměnné x a y, ale při použití už používáme přímo hodnoty (lze použít i proměnné).

#include <stdio.h>

#define SOUCET(x, y) (x + y)

int main()
{
    int vysledek = SOUCET(4, 10);
    printf("Vysledek je %i\n", vysledek);

    return 0;
}

Nám vytiskne

Vysledek je 14

Makra mají své použití ve velmi komplexních programech. V našich programech je můžeme použít pro případy, kdy potřebujeme definovat nějakou konstantu (např. PI).

Více informací najdete zde.

Odkazy

Následující kapitola: Dynamické pole

GitHub diskuze k této kapitole

Zpátky na přehled

Předchozí kapitola: Datový typ číslo