Какой должна быть структура проекта C ++? - PullRequest
4 голосов
/ 25 апреля 2010

Я недавно начал изучать C ++ и пришел из среды Ruby. Мне было очень сложно структурировать проект таким образом, чтобы он по-прежнему компилировался правильно, я использовал Code :: Blocks, что замечательно, но недостатком является то, что Когда я добавляю новый заголовочный файл или исходный файл на С ++, он генерирует некоторый код, и хотя это всего лишь 3 или 4 строки, я не знаю, что делают эти строки. Прежде всего я хотел бы задать этот вопрос:

Что делают эти строки?

#ifndef TEXTGAME_H_INCLUDED
#define TEXTGAME_H_INCLUDED

#endif // TEXTGAME_H_INCLUDED

Мой второй вопрос: мне нужно #include и файл .h и файл .cpp, и в каком порядке.

Мой третий вопрос: где я могу найти компилятор GNU GCC, который, как я полагаю, был упакован с Code :: Blocks, и как его использовать без Code :: Blocks? Я предпочел бы развиваться в виде блокнота ++, потому что это то, к чему я привык в Ruby, но поскольку C ++ компилируется, вы можете думать иначе (пожалуйста, дайте также советы и мнения по этому поводу)

Заранее спасибо, эл.

РЕДАКТИРОВАТЬ: Я на Windows XP и спасибо за быстрые ответы освещения

Ответы [ 4 ]

3 голосов
/ 25 апреля 2010

Чтобы ответить на ваши вопросы:

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

  • Файлы заголовков # включены в файлы .cpp и в другие заголовки. Файлы .cpp обычно не включены #.

  • Компилятор C ++, который поставляется с Code :: Blocks, называется MinGW GCC и находится в каталоге bin установки MinGW. Чтобы найти его, выполните поиск в Windows через проводник для «g ++». Чтобы использовать его, вам нужно будет указать каталог, в котором он находится, на вашем пути поиска. Обратите внимание, что версия компилятора, который поставляется с Code :: Blocks, довольно старая - вы можете получить гораздо более свежую версию от здесь .

3 голосов
/ 25 апреля 2010

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

Вы должны включить только .h. Файл .c будет связан с вашей программой в какой-то форме . Для небольших программ вы можете просто передать все файлы .c в gcc, но в больших программах будут использоваться промежуточные файлы .o или даже библиотеки ( static или dynamic ).

Вы можете определенно работать без IDE. Существует множество способов установить компилятор gcc в Windows, включая Cygwin и MinGW . Я думаю, вы правы в том, что Code :: Blocks поставляется с исполняемым файлом gcc, но я не знаю, где он и какая версия.

1 голос
/ 25 апреля 2010

Эти строки позволяют сделать так, что если файл будет дважды включен #include, все будет продолжать работать. Это, в свою очередь, позволяет вам рассматривать зависимости заголовочного файла как простой ориентированный граф, который, безусловно, является самым простым.

Вы не #include .cpp файлы. (Ну, если только ты не злой программист. Не делай этого!)

Я позволю другим (или Google!) Рассказать вам о gcc, но это может помочь, если бы вы описали, какую платформу вы используете.

0 голосов
/ 25 апреля 2010

На все ваши вопросы ответили другие, кроме этого:

Я бы предпочел развиваться в виде блокнота ++, потому что это то, к чему я привык в Ruby, но так как C ++Скомпилированный, вы можете думать по-другому (пожалуйста, дайте советы и мнения по этому поводу)

Я думаю, что это очень плохая идея.Полноценная IDE со встроенным отладчиком, переходом к определениям символов, возможностями рефакторинга, профилировщиком, intellisense и многим другим практически необходима для любого реального проекта.

И самое лучшее - Visual Studio * с Visual Assist X **.Code :: Blocks меркнет в сравнении;)


* Если вы учитесь в университете, вы можете получить его бесплатно через MSDNAA;в противном случае существует выпуск Visual Studio Express, который предоставляется бесплатно
** 30-дневный ознакомительный период

...