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 - Koptekstbestanden

Een headerbestand is een bestand met de extensie .h die C-functiedeclaraties en macrodefinities bevat die tussen verschillende bronbestanden moeten worden gedeeld. Er zijn twee soorten header-bestanden:de bestanden die de programmeur schrijft en de bestanden die bij uw compiler worden geleverd.

U verzoekt om een ​​header-bestand in uw programma te gebruiken door het op te nemen in de preprocessing-richtlijn C #include , zoals je hebt gezien dat stdio.h . is opgenomen header-bestand, dat bij uw compiler wordt geleverd.

Het opnemen van een headerbestand staat gelijk aan het kopiëren van de inhoud van het headerbestand, maar we doen het niet omdat het foutgevoelig is en het geen goed idee is om de inhoud van een headerbestand in de bronbestanden te kopiëren, vooral als we meerdere bronbestanden in een programma hebben.

Een eenvoudige praktijk in C- of C++-programma's is dat we alle constanten, macro's, systeembrede globale variabelen en functieprototypes in de headerbestanden bewaren en dat headerbestand opnemen waar het nodig is.

Syntaxis opnemen

Zowel de gebruiker als de systeemheaderbestanden worden opgenomen met behulp van de preprocessing-richtlijn #include . Het heeft de volgende twee vormen −

#include <file>

Dit formulier wordt gebruikt voor systeemkopbestanden. Het zoekt naar een bestand met de naam 'file' in een standaardlijst van systeemmappen. U kunt mappen aan deze lijst toevoegen met de optie -I tijdens het compileren van uw broncode.

#include "file"

Dit formulier wordt gebruikt voor headerbestanden van uw eigen programma. Het zoekt naar een bestand met de naam 'file' in de map die het huidige bestand bevat. U kunt mappen aan deze lijst toevoegen met de optie -I tijdens het compileren van uw broncode.

Bewerking opnemen

De #include richtlijn werkt door de C-preprocessor opdracht te geven het gespecificeerde bestand als invoer te scannen voordat verder wordt gegaan met de rest van het huidige bronbestand. De uitvoer van de preprocessor bevat de uitvoer die al is gegenereerd, gevolgd door de uitvoer die voortkomt uit het bijgevoegde bestand, gevolgd door de uitvoer die uit de tekst komt na de #include richtlijn. Als u bijvoorbeeld een headerbestand header.h als volgt heeft:−

char *test (void);

en een hoofdprogramma genaamd program.c dat het header-bestand gebruikt, zoals dit −

int x;
#include "header.h"

int main (void) {
   puts (test ());
}

de compiler zal dezelfde tokenstroom zien als wanneer program.c zou lezen.

int x;
char *test (void);

int main (void) {
   puts (test ());
}

Eenmalige kopteksten

Als een headerbestand twee keer wordt opgenomen, zal de compiler de inhoud twee keer verwerken en zal dit resulteren in een fout. De standaardmanier om dit te voorkomen is om de volledige echte inhoud van het bestand in een voorwaardelijke, zoals deze in te sluiten −

#ifndef HEADER_FILE
#define HEADER_FILE

the entire header file file

#endif

Deze constructie is algemeen bekend als een wrapper #ifndef . Wanneer de koptekst opnieuw wordt opgenomen, is de voorwaardelijke onwaar, omdat HEADER_FILE is gedefinieerd. De preprocessor zal de volledige inhoud van het bestand overslaan en de compiler zal het niet twee keer zien.

Berekend inclusief

Soms is het nodig om een ​​van de verschillende header-bestanden te selecteren die in uw programma moeten worden opgenomen. Ze kunnen bijvoorbeeld configuratieparameters specificeren die op verschillende soorten besturingssystemen moeten worden gebruikt. Je zou dit als volgt kunnen doen met een reeks voorwaarden:−

#if SYSTEM_1
   # include "system_1.h"
#elif SYSTEM_2
   # include "system_2.h"
#elif SYSTEM_3
   ...
#endif

Maar naarmate het groeit, wordt het vervelend, in plaats daarvan biedt de preprocessor de mogelijkheid om een ​​macro te gebruiken voor de headernaam. Dit wordt een berekende include . genoemd . In plaats van een headernaam te schrijven als het directe argument van #include , je zet daar gewoon een macronaam −

#define SYSTEM_H "system_1.h"
...
#include SYSTEM_H

SYSTEM_H wordt uitgebreid en de preprocessor zoekt naar system_1.h alsof de #include was oorspronkelijk zo geschreven. SYSTEM_H kan worden gedefinieerd door je Makefile met een -D optie.


C Taal

  1. C Bestandsverwerking
  2. Python-bestand I/O
  3. Java-bestandsklasse
  4. Een inleiding tot STL-bestanden
  5. Verilog File IO-bewerkingen
  6. C - Bestand I/O
  7. C++-bestanden en -streams
  8. C# - Bestand I/O
  9. Python - Bestanden I/O
  10. Wat is een driehoekig bestand?
  11. Wat is een Mill-bestand?