Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C Preprocessor & Macros: #include, #define en voorwaardelijke compilatie onder de knie krijgen

C Preprocessor & Macros

Ontdek de kracht van C's preprocessor: leer headers includeren, constanten en functies definiëren, en compilatiestroom controleren met voorwaardelijke directieven.

C Preprocessor & Macros: #include, #define en voorwaardelijke compilatie onder de knie krijgen

De C preprocessor draait voor de compiler, en transformeert je broncode door macros uit te breiden, headerbestanden te includeren, en voorwaardelijke statements te evalueren. Het is een essentieel hulpmiddel voor het schrijven van flexibele, herbruikbare code.

Alle preprocessor-directieven beginnen met een # symbool. Bijvoorbeeld:

#define PI 3.14

Header-bestanden includeren: #include

De #include directief voegt de inhoud van een headerbestand direct in je bronbestand in. Gangbaar gebruik:

#include <stdio.h>

Zonder #include <stdio.h> zouden functies zoals printf() en scanf() ongedefinieerd zijn. Je kunt ook custom headers aanmaken:

#include "my_header.h"

Custom headers zijn handig voor het groeperen van gerelateerde functiedeclaraties en constanten.

Constanten en expressies definiëren: #define

Een macro vervangt een token of expressie met een waarde vóór compilatie. Voorbeeld:

#define c 299792458 /* lichtsnelheid */

Het gebruik van c ergens in je programma expandeert naar 299792458.

Voorbeeld 1: PI definiëren

#include <stdio.h>
#define PI 3.1415
int main() {
    float radius, area;
    printf("Voer de straal in: ");
    scanf("%f", &radius);
    area = PI * radius * radius;
    printf("Oppervlakte=%.2f", area);
    return 0;
}

Functie-achtige Macros

Macros kunnen argumenten accepteren, functionerend als inline functies:

#define circleArea(r) (3.1415 * (r) * (r))

Voor circleArea(5) expandeert de preprocessor naar (3.1415 * 5 * 5).

Voorbeeld 2: Een functie-achtige macro gebruiken

#include <stdio.h>
#define PI 3.1415
#define circleArea(r) (PI * (r) * (r))
int main() {
    float radius, area;
    printf("Voer de straal in: ");
    scanf("%f", &radius);
    area = circleArea(radius);
    printf("Oppervlakte = %.2f", area);
    return 0;
}

Voorwaardelijke compilatie

Voorwaardelijke directieven laten je codeblokken includeren of uitsluiten bij compile-tijd, vergelijkbaar met if statements maar geëvalueerd vóór uitvoering.

Gangbare use cases

  • Verschillende besturingssystemen of hardware targeten.
  • Debug builds aanmaken zonder runtime overhead.
  • Legacy codepaden behouden voor referentie.

Belangrijke directieven

#ifdef MACRO /* code wanneer MACRO gedefinieerd is */ #endif
#if EXPRESSIE /* code wanneer EXPRESSIE non-zero is */ #else /* code wanneer EXPRESSIE nul is */ #endif
#if EXPRESSIE /* code */ #elif ANDERE_EXPRESSIE /* alternatieve code */ #else /* fallback code */ #endif
#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048 /* buffer is groot genoeg */ #endif

Voorgedefinieerde Macros

MacroWaarde
__DATE__String van de huidige compilatiedatum
__FILE__String van de huidige bestandsnaam
__LINE__Regelnummer waar de macro verschijnt
__STDC__Non-nul als de compiler de ANSI C standaard volgt
__TIME__String van de huidige compilatietijd

Voorbeeld 3: Compilatietijd weergeven

#include <stdio.h>
int main() {
    printf("Huidige tijd: %s", __TIME__);
    return 0;
}

Output voorbeeld:

Huidige tijd: 19:54:39

Aanbevolen leesstof

  • Line Control
  • Pragmas
  • Preprocessor Output
  • Overige Directieven

C Taal

  1. Uitgebreide Samenvatting van Weerstanden, Spoelen, en Condensatoren in AC-Stromingen
  2. C# Keywords en Identifiers begrijpen: Regels, lijsten en best practices
  3. C# Classes & Objects: Fundamenten voor Robuuste OOP
  4. C# Abstract Classes & Methods: Een Praktische Gids
  5. C# Partial Classes en Methods: Een Praktische Gids
  6. C# Sealed Classes en Methods: Wanneer en Hoe Te Gebruiken
  7. C# preprocessor directives: een praktische gids
  8. C Sleutelwoorden & Identifiers: Een Praktische Gids
  9. C-constanten en literals: Types, gebruik en best practices
  10. Invoer en uitvoer in C programmeren: Volledige gids
  11. De C-preprocessor (CPP) begrijpen: Hoe het de compilatie vereenvoudigt