Какая разница, если у нас будет единое расширение (.c / .cpp) для всех файлов C / C ++? - PullRequest
1 голос
/ 22 июня 2011

В C/C++ проекте, в основном файл может быть любого типа .h или .c / .cpp. Помимо различий в именах, таких как заголовок и файлы реализации; есть ли разница в функциональности?

Другими словами: если в работающем C/C++ проекте какая разница , если мы изменим все файлы с расширением .c или .cpp?

[Примечание: у нас также могут быть #include охранники для .c/.cpp файлов. Мы можем пропустить их компиляцию, если они рассматриваются как заголовки.]

Редактировать : Дебаты не предназначены для этого, так как у меня нет основательного варианта использования. Скорее, я хотел знать, что предоставление расширений .h, .hxx, .i - это просто средство или правило. например Я вижу одно функциональное отличие: у .cxx файлов могут быть свои симпатичные объектные файлы.

Ответы [ 3 ]

5 голосов
/ 22 июня 2011

Если вы используете gcc, и вы пытаетесь скомпилировать кучу файлов C ++, помеченных с расширением .c, он попытается скомпилировать ваш файл, как если бы это был файл на языке C, который будет созданкуча ошибок.

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

5 голосов
/ 22 июня 2011

Какая разница?Компилятор совершенно доволен этим.Для него это просто файлы.

Но для вас?Вы делаете большую разницу:

  • вы больше не можете сразу определить, какой из них является заголовком, а какой реализацией;
  • вы больше не можете давать заголовоки реализация одноименная;
1 голос
/ 22 июня 2011

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

Make, IDE и другие инструменты обычно ожидают соглашения .c / .cpp для source и h / hppдля заголовка.Компилятор обычно идет дальше и по умолчанию компилируется в C для компиляции .c и c ++ для .cpp

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

...