Wat is Macro (#define)?

In C een tekstvervanging die met #define een naam krijgt. Er zijn objectachtige macro's die constanten een naam geven, zoals #define BUF_SIZE 64, en functieachtige macro's met argumenten, zoals #define SQUARE(x) ((x) * (x)); de preprocessor expandeert ze vóór het compileren. Expansie is alleen tekstvervanging, dus zonder haakjes rond de argumenten en de hele body kan de operatorvoorrang een onbedoelde expressie opleveren, en een argument met neveneffecten zoals SQUARE(i++) wordt meer dan eens geëvalueerd.

Japanse benaming: マクロ

“Macro (#define)” komt voor in 3 oefenvragen uit 1 onderwerpen, bijv. Basis van programmeren in C.

Vakgebied: Basis van programmeren in C

“Macro (#define)” in de toelichting

Vragen met “Macro (#define)” (3)

  1. Wat is de uitvoer als de bovenstaande code, die de met #define gedefinieerde macro SQUARE gebruikt, wordt uitgevoerd?
  2. Het headerbestand sensor.h is geschreven zoals hierboven. Wat is het doel van de drie regels #ifndef, #define en #endif?
  3. Wat is de uitvoer als de bovenstaande code binnen de functie main wordt geschreven en uitgevoerd?

Verwante termen

Preprocessor Argument Ongedefinieerd gedrag (undefined behavior) Struct (C-structuur) Bitveld (bit-field) Bufferoverloop (buffer overflow) Dangling pointer Dynamische geheugentoewijzing Functiepointer Geheugenlek (memory leak)

Naar de woordenlijst