.с vs.cc и.cpp против hpp против h против cxx [дубликат]
Возможные Дубликаты:
*.h или *.hpp для ваших определений классов
правильное расширение файла кода C++? .чч против .cpp
раньше я думал, что это было так:
-
.h
файлы являются заголовочными файлами для C и C++ и обычно содержат только объявления. -
.c
файлы с исходным кодом. -
.cpp
файлы являются исходным кодом C++ (который также может быть исходным кодом C).
затем файлы, такие как .hpp
, .cc
и .cxx
пришел, и я совершенно запутался... в чем разница между ними? Когда вы используете "новые"?
6 ответов
исторически первыми расширениями, используемыми для C++, были .c
и .h
, точно так же, как для C. Это вызвало практические проблемы, особенно .c
что не позволяло системам сборки легко различать файлы C++ и C.
Unix, на котором был разработан C++, имеет чувствительные к регистру файловые системы. Поэтому некоторые использовали .C
для файлов C++. Другое используется .c++
, .cc
и .cxx
. .C
и .c++
есть проблема, что они недоступны в другом файле системы и их использование быстро прекратились. Компиляторы DOS и Windows C++, как правило, используют .cpp
, и некоторые из них делают выбор трудным, если не невозможным, для настройки. Мобильность сделала этот выбор наиболее распространенным, даже за пределами MS-Windows.
заголовки использовали соответствующие .H
, .h++
, .hh
, .hxx
и .hpp
. Но в отличие от основных файлов,.h
остается по сей день популярным выбором для C++ даже с тем недостатком, что он не позволяет чтобы узнать, может ли заголовок быть включен в контекст C или нет. Стандартные заголовки теперь вообще не имеют расширения.
кроме того, некоторые из них с помощью .ii
, .ixx
, .ipp
, .inl
для заголовков, предоставляющих встроенные определения и .txx
, .tpp
и .tpl
для определения шаблона. Они либо включаются в заголовки, предоставляющие определение, либо вручную в контекстах, где они необходимы.
компиляторы и инструменты, как правило, не заботятся о том, что расширения используются, но использование расширения, которое они связывают с C++ предотвращает необходимость отслеживать, как настроить их, чтобы они правильно распознали используемый язык.
2017 edit: поддержка экспериментального модуля Visual Studio recognize .ixx
в качестве расширения по умолчанию для интерфейсов модулей clang++ распознает .c++m
, .cppm
и .cxxm
С той же целью.
эти расширения на самом деле не новые, они старые. :-)
Когда C++ был новым, некоторые люди хотели иметь a .расширение c++ для исходных файлов, но это не работает в большинстве файловых систем. Поэтому они попытались сделать что-то похожее .схх, или .вместо этого cpp.
другие думали о названии языка, а "приращение" .c, чтобы получить .cc или даже .С в некоторых случаях. Не так уж много я понял.
некоторые считали, что если источник есть .cpp, заголовки должны быть. ГЭС, чтобы соответствовать. Умеренно успешный.
Это действительно не имеет значения.
Если ты питаешься .C для компилятора C++ он будет компилироваться как cpp,.cc/.cxx - это просто альтернатива .cpp используется некоторыми компиляторами.
.hpp-это попытка различать заголовочные файлы, в которых существуют значительные различия c и c++. Общее использование для .hpp, чтобы иметь необходимые оболочки cpp или пространство имен, а затем включить .h для предоставления библиотеки c как c, так и c++.
Я использую ".hpp "для заголовков C++ и".h " для заголовков языка C. Этот." ГЭС" напоминает мне, что файл содержит инструкции для язык C++, который недопустим для языка C, например как объявления "класса".
в целом .с и. H файлы предназначены для C или C-совместимого кода, все остальное-C++.
многие люди предпочитают использовать согласованное сопряжение для файлов c++:.с СРР .ТЭЦ. ,с схх .hxx,.cc С.ДХ и т. д. Мое личное предпочтение-за .cpp и .ТЭЦ.
об этом говорю .расширение ГЭС, я считаю это полезным, когда люди должны знать, что этот заголовочный файл содержит C++ не C, например, используя пространства имен или шаблон и т. д., К тому моменту, когда они видят файлы, поэтому они не будут пытаться передать его в C компилятор! И мне также нравится называть заголовочные файлы, которые содержат не только объявления, но и реализации .файлы ГЭС. как заголовочные файлы, включая классы шаблонов. Хотя это только мое мнение и конечно это не должно быть прав! :)