СРР.| H-файлы (с++)

Мне просто интересно, в чем разница .cpp и .H-файлы есть? Что бы я использовал файл заголовка (.h) для чего и для чего я буду использовать cpp-файл?

7 ответов


В общем, и это действительно может быть намного менее общим:

.h (заголовок) файлы деклараций для вещей, которые используются много раз, и #included в других файлах

.cpp (реализация) файлы для всего остального, и почти никогда не #included


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

по соглашению вы помещаете свои объявления (в основном, то, что составляет ваш API) в .H-файлы, и называются "заголовки". Этот.файлы cpp предназначены для фактических "кишок" вашего кода - деталей реализации.

обычно у вас есть заголовочные файлы, включенные в #include другими файлами в вашем проекте (и другими проектами, если вы создаете библиотеку), поэтому компилятор может получить интерфейс, необходимый для компиляции. Реализация, в том числе .cpp файлы, обычно реализуется так есть .cpp-файл "заполнение" реализации per .H-файл.


по соглашению .H-файлы-это то, что вы #Include. CPP-файлы-это то, что вы добавляете в свой проект для компиляции в отдельный объектный файл, а затем передаете компоновщику.


The .H файл называется заголовочным файлом. Вы обычно помещаете туда свой интерфейс (материал, который вы хотите опубликовать). Файл cpp-это то, где вы фактически реализуете свой интерфейс.


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

по соглашению различные расширения имен файлов используются для указания содержимого файлов. В C-программах вы, как правило, видите .h и .c файлы в то время как в C++ .ГЭС и. СРР служат тем же целям.

первая группа .h и .файлы hpp, называемые файлами заголовков, содержат в основном неисполняемый код, такой как определения константы и прототипы функций. Они добавляются в программы через #include директива и используется не только соответствующей программой или библиотекой, но и другими программами или библиотеками, которые будут использовать их, объявляя точки интерфейса и контракты, определяющие значения. Они также используются для установки метаданных, которые могут изменяться при компиляции для различных операционных систем.

вторая группа .с и. cpp-файлы, содержащие исполняемые части кода для библиотеки или программы.


поправьте меня, если я ошибаюсь, но,

когда вы #include что-то, он более или менее вставляет весь включенный файл в один с командой include; то есть, когда я включаю, скажем "макросы.H "in" genericTools.cpp", все содержимое " макросов.h "помещается в" genericTools.cpp " в этот момент. Вот почему вам нужно использовать такие вещи, как" #pragma once " или другие защиты, чтобы предотвратить включение одного и того же файла дважды.

Примечание, шаблонный код должен быть полностью в файле, который вы собираетесь включить в другое место. (Я уверен в этом - может шаблон специализации быть опущен из включенных файлов, и связаны, как обычную функцию?)


на .cpp то есть файл реализации - это наша фактическая программа или код. Когда нам нужно использовать различные встроенные функции в нашем коде, мы должны включить файл заголовка, который является .h файлы.

эти .h файлы содержат фактический код встроенных функций, которые мы используем, поэтому мы можем просто вызвать соответствующие функции.

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