C++. Сборник рецептов - [8]
• стандартная библиотека STLPort;
• хороший визуальный отладчик;
• менеджер проектов с ограниченной способностью управлять зависимостями проектов.
Я описываю C++Builder, потому что он широко используется и у него есть большое сообщество преданных пользователей.
C++Builder не следует путать с C++BuilderX — кросс-платформенной средой разработки, выпущенной Borland в 2003 году. Хотя C++BuilderX является полезным инструментом разработки, он не имел коммерческого успеха и неизвестно, будет ли Borland выпускать его новые версии.
Bloodshed Software Dev-C++ — это бесплатная среда разработки C++ для Windows, использующая порт MinGW GCC, описанный в рецепте 1.1. Он содержит вполне удобный текстовый редактор и визуальный интерфейс для отладчика GNU.
Dev-C++ предлагает неполный графический интерфейс для многочисленных опций командной строки GCC: во многих случаях пользователи должны настраивать свои проекты, вводя в текстовые поля опции командной строки. Кроме того, его менеджер проектов может управлять только одним проектом, а визуальный отладчик ненадежен. Несмотря на эти ограничения, Dev-C++ поддерживается большим сообществом пользователей, включая студентов многих университетов. Это хорошая среда для того, кто хочет изучить С++, но не имеет никаких инструментов для разработки на С++.
Co времен, когда в 1978 году Брайан Керниган (Brian Kernighan) и Деннис Ритчи (Dennis Ritchie) опубликовали книгу The С Programming Language (Язык программирования С), стало традицией начинать изучение нового языка программирования с написания, компиляции и запуска небольшой программки, которая печатает в консоли «Hello, World!» («Привет, мир!»). Так как эта глава описывает статические и динамические библиотеки, а также исполняемые файлы, мне потребуется несколько более сложный пример.
Примеры 1.1, 1.2 и 1.3 представляют исходный код приложения hellobeatles, которое выводит текст
>John, Paul, George, and Ringo
на консоль. Это приложение можно написать в виде единого исходного файла, но я разбил его на три модуля: статическую библиотеку libjohnpaul, динамическую библиотеку libgeorgeringo и исполняемый файл hellobeatles. Более того, хотя каждая из этих библиотек могла бы быть легко реализована как один заголовочный файл и один файл .cpp, я, чтобы проиллюстрировать компиляцию и компоновку проектов, содержащих более одного исходного файла, разбил реализацию на несколько исходных файлов.
Исходный код libjohnpaul представлен в примере 1.1. Открытый интерфейс libjohnpaul состоит из одной функции >johnpaul()
, объявленной в заголовочном файле johnpaul.hpp. Функция >johnpaul()
отвечает за печать:
>John, Paul,
на консоль. Реализация >johnpaul()
разбита на два. исходных файла — john.cpp и paul.cpp, каждый из которых отвечает за печать одного имени.
Пример 1.1. Исходный код libjohnpaul
johnpaul/john.hpp
>#ifndef JOHN_HPP_INCLUDED
>#define JOHN_HPP_INCLUDED
>void john(); // Печатает "John, "
>#endif // JOHN _HPP_INCLUDED
johnpaul/john.cpp
>#include
>#include "john.hpp"
>void john() {
> std::cout << "John, ";
>}
johnpaul/paul.hpp
>#ifndef PAUL_HPP_INCLUDED
>#define PAUL_HPP_INCLUDED
>void paul(); // Печатает " Paul, "
>#endif // PAUL_HPP_INCLUDED
johnpaul/paul.cpp
>#include
>#include "paul.hpp"
>void paul() {
> std::cout << "Paul, ";
>}
johnpaul/johnpaul.hpp
>#ifndef JOHNPAUL_HPP_INCLUDED
>#define JOHNPAUL_HPP_INCLUDED
>void johnpaul(); // Печатает "John, Paul, "
>#endif // JOHNPAUL_HPP_INCLUDED
johnpaul/johnpaul.cpp
>#include "john.hpp"
>#include "paul.hpp"
>#include "johnpaul.hpp"
>void johnpaul() {
> john();
> paul();
>}
Исходный код libgeorgeringo представлен в примере 1.2. Открытый интерфейс libgeorgeringo состоит из одной функции >georgeringo()
, объявленной в заголовочном файле georgeringo.hpp. Как вы могли догадаться, функция >georgeringo()
отвечает за печать:
>George, and Ringo
на консоль. И снова реализация >georgeringo()
разделена на два исходных файла — george.cpp и ringo.cpp.
Пример 1.2. Исходный код libgeorgeringo
georgeringo/george.hpp
>#ifndef GEORGE_HPP_INCLUDED
>#define GEORGE_HPP_INCLUDED
>void george(); // Печатает "George, "
>#endif // GEORGE_HPP_INCLUDED
georgeringo/george.cpp
>#include
>#include "george.hpp"
>void george()
> std::cout << "George, ";
>}
georgeringo/ringo.hpp
>#ifndef RINGO_HPP_INCLUDED
>#define RINGO_HPP_INCLUDED
>void ringo(); // Печатает "and Ringo\n"
>#endif // RINGO_HPP_INCLUDED
georgeringo/ringo.cpp
>#include
>#include "ringo.hpp"
>void ringo() {
> std::cout << "and Ringo\n";
>}
georgeringo/georgeringo.hpp
>#ifndef GEORGERINGO_HPP_INCLUDED
>#define GEORGERINGO_HPP_INCLUDED
>// определите GEORGERINGO_DLL при сборке libgeorgeringo.dll
>#if defined(_WIN32) && !defined(__GNUC__)
>#ifdef GEORGERINGO_DLL
># define GEORGERINGO_DECL __declspec(dllexport)
>#else
># define GEORGERINGO_DECL __declspec(dllimport)
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.