Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

C — заголовочные файлы

Заголовочный файл — это файл с расширением .h. который содержит объявления функций C и определения макросов для совместного использования несколькими исходными файлами. Существует два типа заголовочных файлов:файлы, которые пишет программист, и файлы, поставляемые с вашим компилятором.

Вы запрашиваете использование заголовочного файла в своей программе, включая его с помощью директивы препроцессора C #include. , как вы видели включение stdio.h заголовочный файл, который поставляется вместе с вашим компилятором.

Включение заголовочного файла равносильно копированию содержимого заголовочного файла, но мы этого не делаем, поскольку это чревато ошибками, а копировать содержимое заголовочного файла в исходные файлы не рекомендуется, особенно если мы иметь несколько исходных файлов в программе.

Простая практика в программах C или C++ заключается в том, что мы храним все константы, макросы, системные глобальные переменные и прототипы функций в файлах заголовков и включаем этот файл заголовка везде, где это необходимо.

Включить синтаксис

И пользовательские, и системные заголовочные файлы включаются с помощью директивы предварительной обработки #include. . Он имеет следующие две формы —

#include <file>

Эта форма используется для системных заголовочных файлов. Он ищет файл с именем «файл» в стандартном списке системных каталогов. Вы можете добавить каталоги в этот список с опцией -I во время компиляции исходного кода.

#include "file"

Эта форма используется для заголовочных файлов вашей собственной программы. Он ищет файл с именем «файл» в каталоге, содержащем текущий файл. Вы можете добавить каталоги в этот список с опцией -I во время компиляции исходного кода.

Включить операцию

#include Директива работает, предписывая препроцессору C сканировать указанный файл в качестве входных данных, прежде чем продолжить работу с остальной частью текущего исходного файла. Вывод препроцессора содержит уже сгенерированный вывод, за которым следует вывод, полученный из включенного файла, за которым следует вывод, полученный из текста после #include директива. Например, если у вас есть файл заголовка header.h следующим образом —

char *test (void);

и основная программа с именем program.c который использует заголовочный файл, например этот —

int x;
#include "header.h"

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

компилятор увидит тот же поток токенов, что и при чтении program.c.

int x;
char *test (void);

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

Одноразовые заголовки

Если заголовочный файл будет включен дважды, компилятор дважды обработает его содержимое, что приведет к ошибке. Стандартный способ предотвратить это — заключить все реальное содержимое файла в условное выражение, например:—

#ifndef HEADER_FILE
#define HEADER_FILE

the entire header file file

#endif

Эта конструкция широко известна как оболочка #ifndef. . При повторном включении заголовка условие будет ложным, поскольку определен HEADER_FILE. Препроцессор пропустит все содержимое файла, и компилятор не увидит его дважды.

Вычисляемые включения

Иногда необходимо выбрать один из нескольких различных заголовочных файлов для включения в вашу программу. Например, они могут указывать параметры конфигурации, которые будут использоваться в различных операционных системах. Вы можете сделать это с помощью ряда условных выражений следующим образом —

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

Но по мере роста становится утомительным, вместо этого препроцессор предлагает возможность использовать макрос для имени заголовка. Это называется вычисляемым включением. . Вместо записи имени заголовка в качестве прямого аргумента #include , вы просто помещаете туда имя макроса −

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

SYSTEM_H будет расширен, и препроцессор будет искать system_1.h, как если бы #include так было написано изначально. SYSTEM_H может быть определен вашим Makefile с параметром -D.


Язык C

  1. C Обработка файлов
  2. Файловый ввод-вывод Python
  3. Класс файла Java
  4. Введение в файлы STL
  5. Операции ввода-вывода файлов Verilog
  6. C - файловый ввод/вывод
  7. Файлы и потоки C++
  8. С# — файловый ввод-вывод
  9. Python — файловый ввод-вывод
  10. Что такое треугольный файл?