Подробное объяснение файлов заголовков и исходных файлов в C ++
1. Режим компиляции C ++
Как правило, в программе C ++ есть только два типа файлов - .cpp файл и .h File. Среди них файл .cpp называется исходным файлом C ++, и в него помещается исходный код C ++; в то время как файл .h называется файлом заголовка C ++, и в него помещается исходный код C ++.
Язык C ++ поддерживает «отдельный сборник». Другими словами, все содержимое программы можно разделить на разные части и размещать в разных файлах .CPP. Вещи в файле .cpp относительно независимы. При компиляции (компиляции) вам не нужно общаться с другими файлами. Вам нужно связать только с другими целевыми файлами после сбора его в целевой файл. Например, глобальная функция «void a () {}» определяется в файле A.CPP, и эту функцию необходимо вызвать в файле B.CPP. Несмотря на это, файлы A.CPP и B.CPP не должны знать существование друг друга, но могут компилировать их отдельно. После сбора их в целевой файл, свяжите их, и вся программа может быть запущена.
Как это достигается? С точки зрения написания программ, это очень просто. В файле b.cpp, прежде чем вызывать функцию «void a ()», объявите функцию «void a ();»; первый. Это потому, что компилятор будет генерировать таблицу символов при составлении B.CPP. Символы, такие как «void a ()», которые невозможно увидеть, будут храниться в этой таблице. При снова связывании компилятор будет искать определение этого символа в других файлах объектов. После того, как программа может быть получена плавно.
Обратите внимание, что здесь упоминаются две концепции, одна - «определение», а другая - «объявление». Проще говоря, «Определение» означает, что описание символа полным и полным образом: является ли это переменной или функцией, какой тип он возвращает, какие параметры ему нужны, и т. Д. ». Объявление» просто заявляет о существовании этого символа, то есть говорит компилятору, что этот символ определяется в других файлах. Я буду использовать его в первую очередь. Когда вы ссылаетесь, перейдите в другое место, чтобы узнать, что это такое. При определении вы должны определить символ (переменная или функция) полностью в соответствии с синтаксисом C ++, и при объявлении вам нужно только написать прототип этого символа. Следует отметить, что символ может быть объявлен несколько раз по всей программе, но должен определяться только один раз. Представьте себе, что есть два разных определения символа, кто должен слушать компилятор?
Этот механизм приносит много преимуществ программистам C ++, а также приводит к методу написания программ. Считайте, что если есть очень часто используемая функция «void f () {}», которая будет вызвана во многих файлах .cpp во всей программе, тогда нам нужно определить эту функцию только в одном файле и объявить эту функцию в других файлах. С функцией легко справиться, и это означает только одно предложение, чтобы объявить его. Однако что, если есть слишком много функций, таких как куча математических функций, их сотни? Может ли каждый программист обязательно записать и записать все функции в форме их?
2. Что такое файл заголовка
Очевидно, ответ невозможно. Но есть очень простой способ помочь программистам сохранить проблему запоминания так много прототипов функций: сначала мы можем написать все заявления о объявлениях сотен функций и поместить их в файл. Когда программист нуждается в них, скопируйте все эти вещи в его исходный код.