Каково расширение по умолчанию для исходных файлов C++0x?
Когда мы программировали на C, расширения файлов обычно основывались на "C", "CC" или "H". затем мы мигрировали на C++, и были введены новые расширения файлов "cpp" и "hpp", хотя "hpp" не используется обычно (или, по крайней мере, я так думаю), так что же такое новые расширения файлов C++0x или как они отличаются из файлов c/ C++?
6 ответов
C++0x - это просто новый стандарт для C++, а не новый язык. Там нет необходимости менять расширение файла, и я не верю, что кто-то будет.
Язык не определяет ничего о расширениях файлов, это не волнует. Это полностью зависит от реализации.
Компиляторы, которые я использовал, не используют расширения файлов, чтобы различать различные диалекты C++. Также в этом отношении они не используют расширения файла, чтобы различить источник C89 и C99. Например, в g++ способ указать диалект с помощью -std
, -pedantic
, -ansi
параметры командной строки.
Насколько я знаю, эта политика будет продолжаться: как только C++0x станет стандартом и g++ объявит, что он поддерживается, способ указать, хотите ли вы C++03 или C++11[*], будет с -std
вариант.
Вы, конечно, можете придумать свое собственное соглашение (так же, как вы выбираете между .cc
, .cpp
, .C
, .cxx
или любые другие расширения файлов, которые другие люди использовали для C++). Если вы чувствуете, что расширение файла это путь, и вы используете make
Определите правило:
*.o : *.cpp11
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -std=c++11 -c
Конечно, детали для других систем сборки и других компиляторов могут отличаться, но все это выходит за рамки стандарта, который просто определяет язык, а не файлы, в которых он хранится.
Если вас беспокоит файл, который использует C++0x, случайно компилируемый как C++03, то у вас есть несколько вариантов. Если он использует функции C++0x, отсутствующие в C++03, то часто файл не компилируется как C++03, и в этом случае вам не нужно ничего делать (кроме исправления параметров сборки). В противном случае вы можете сознательно убедиться, что он использует такую функцию, например, для обеспечения версии C++, по крайней мере, такой же новой, как FDIS:
#if __cplusplus < 201103L
#error "Wrong version!"
#endif
[*] будем надеяться.
Для меня нет причин менять расширение файла. C++0x - это всегда C++, а не другой язык. C и C++ не являются одним и тем же языком, поэтому нормально иметь другие расширения. Но в этом случае я не вижу причин менять расширение.
Почему должно быть новое расширение? "Новый" C++0x будет простым, простым "старым" C++ после его завершения. Нет необходимости в новом расширении или чем-то еще... Его больше не будут называть "C++0x" или "C++11", только если действительно важно различать стандарты.
Вы можете сохранить файлы C++ как.c и файлы заголовков как.h. Компилятору будет все равно. Это просто новый стандарт, а не новый язык.
Вы можете использовать любые расширения, которые хотите использовать. Без изменений там.