Каково расширение по умолчанию для исходных файлов c ++ 0x? - PullRequest
1 голос
/ 20 июня 2011

, когда мы программировали C, расширения файлов обычно основывались на "C", "CC" или "H".затем мы мигрировали на C ++, и были добавлены новые расширения файлов "cpp" и "hpp", хотя "hpp" не используется обычно (или, по крайней мере, я так думаю), так что же такое новые расширения файлов C ++ 0x или как они отличаютсяиз файлов c / c ++?

Ответы [ 6 ]

17 голосов
/ 20 июня 2011

C ++ 0x - это просто новый стандарт для C ++, а не новый язык. Нет необходимости менять расширение файла, и я не верю, что кто-то это сделает.

3 голосов
/ 20 июня 2011

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

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

[*] будем надеяться.

3 голосов
/ 20 июня 2011

Для меня нет причин менять расширение файла.C ++ 0x - это всегда C ++, а не другой язык.C и C ++ не являются одним и тем же языком, поэтому нормально иметь другие расширения.Но в этом случае я не вижу причин менять расширение.

2 голосов
/ 20 июня 2011

Почему должно быть новое расширение?«Новый» C ++ 0x будет простым, простым «старым» C ++ после его завершения.Нет необходимости в новом расширении или чем-то еще ... Его больше не будут называть «C ++ 0x» или «C ++ 11», только если действительно важно различать стандарты.

2 голосов
/ 20 июня 2011

Вы можете сохранить файлы c ++ как .c и файлы заголовков как .h. Компилятору будет все равно. Это просто новый стандарт, а не новый язык.

0 голосов
/ 20 июня 2011

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

...