Каково расширение по умолчанию для исходных файлов 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. Компилятору будет все равно. Это просто новый стандарт, а не новый язык.

Вы можете использовать любые расширения, которые хотите использовать. Без изменений там.

Другие вопросы по тегам