2010-04-25 3 views
4

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

Что делают эти линии?

#ifndef TEXTGAME_H_INCLUDED 
#define TEXTGAME_H_INCLUDED 

#endif // TEXTGAME_H_INCLUDED 

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

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

Заранее спасибо, флигель.

EDIT: Я нахожусь в Windows XP & спасибо за освещение быстрых ответов!

+0

Если вы работаете без IDE, который обрабатывает процесс компиляции для вас, вам обязательно нужно узнать о [Makefiles] (http: // en .wikipedia.org/wiki/Make_% 28software% 29) и, возможно, такие инструменты, как [Autotools] (http://en.wikipedia.org/wiki/GNU_build_system). Установка [mingw] (http://www.mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite) вместе с [msys] (http://www.mingw.org/wiki/msys) с [gdb] (http: // stackoverflow .com/questions/170097/add-gdb-to-mingw), а полезные утилиты [make and autotools] (http://mingw.org/node/48) могут быть сложным процессом, но нельзя сдаваться. – clyfe

ответ

3

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

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

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

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

3

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

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

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

+1

он поставляется с mingw 5.1.6, который включает gcc 3.4.5, который довольно устарел, я для своего использования GCC TDM, который намного более свежий, новая версия кодовых блоков, которая будет выпущена, возможно, будет включать в себя больше на сегодняшний день. – smerlin

1

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

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

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

-1

Все вопросы были даны ответы на другие, кроме этого:

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

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

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


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

+0

Не говоря уже о Vi $ ual Cash от PaymySoft (п.п., я не знаю). – clyfe

+0

Но разве вы не думаете, что лучше писать сам код, а не быть автоматически генерируемым? – Ell

+0

С плагином Visual Keyboard Xtreme, который позволяет редактировать ваши файлы с помощью клавиатуры:> – clyfe