====== Конспект по C++ ====== > :!: Данная заметка находится в процессе написания > FIXME Требуется проверка орфографии и грамматики. > FIXME Заметка написана от первого лица. Добро пожаловать в заметку про С++! В ней планируется расписать путь изучения данного языка с полного нуля, до джуна (хотя бы). С++ очень большой язык, с не менее большой историей, а заметку пишет в основном один редактор, поэтому возможны неточности и сильные заблуждения!. К С++ в заметке будут обращаться как "плюсы", "с++", "спп". ===== Подготовка ===== Прежде чем начать изучать С++ нужно уяснить несколько моментов: * Если есть выбор, то надо идти по пути наименьшего сопротивления. * Если нет настроения, то надо отдохнуть. * Сложности могут вызывать неприятные ощущения. Их надо превозмочь. После уяснения этих моментов можно приступать к настройке нашего окружения, где мы будем изучать язык. ==== IDE и редакторы кода ==== На Windows есть отличная среда разработки - Visual Studio, которую сделали сами Microsoft. В Linux такого богатства нет (кто бы сомневался?). Помимо бесплатных решений есть платный CLion, который доступен на Windows и Linux, но мы же open-source разработчики и средствами на такое удовольствие не располагаем. > FIXME Если вы читаете эту заметку на Windows, то огорчу вас. Основной редактор этой заметки – линуксоид и он понятия не имеет как настроить среду под вашу ОС. Если вы разберётесь в этом вопросе самостоятельно, то можете дополнить данную заметку самостоятельно! Однако на Линуксе есть Visual Studio Code((И множество редакторов внутри терминала, которые оставлены на самостоятельное изучение читателем.)), который можно настроить под плюсы. Этим я и занялся в первый день изучения. После установки данного плагина **:!: Настоятельно рекомендуется скачать VSC из репозиториев вашего дистрибутива. Flatpak версия обеспечит вас лишней головной болью из-за [[Контейнеризация|контейнеризации]].** После того, как вы скачали VSC, надо приступить к установке плагинов к нему. Выбор редактора заметки пал на расширение [[https://open-vsx.org/vscode/item?itemName=KylinIdeTeam.kylin-clangd|Kylin Clangd]], которое подсвечивает синтаксис, помогает поймать опечатки и возможные ошибки компиляции. Но помимо подсветки синтаксиса необходимо дебажить полученный бинарный файл. Для этого редактор рекомендует скачать плагин [[https://open-vsx.org/vscode/item?itemName=vadimcn.vscode-lldb|lldb дебаггер]]. Этой подготовки хватит, чтобы писать код на C++ было удобно. Поскольку Visual Studio Code неполноценная IDE, рано появляется необходимость автоматизации процесса создания проекта и его сборки. Специально для совбатока, были подготовлены универсальные Makefile и launch.json, которые позволят быстро создавать скелет проекта, собирать и дебажить его. Далее в заметке будет обращение к строкам из этих файлов, чтобы объяснить их получше. # Compiler and flags CXX = clang++ CXXFLAGS = -std=c++17 -pedantic-errors -Wall -Wextra -Wpedantic -Werror DEBUG_FLAGS = -g -ggdb RELEASE_FLAGS = -O2 -DNDEBUG # Directories BUILD_DIR = build SRC_DIR = src INCLUDE_DIR = include LIBS_DIR = libs DOCS_DIR = docs # Find all source files SRC_FILES = $(shell find $(SRC_DIR) -name '*.cpp') # Default target all: debug # Create project structure structure: mkdir -p $(BUILD_DIR) $(INCLUDE_DIR) $(LIBS_DIR) $(DOCS_DIR) # Debug build - builds all .cpp files in src/ debug: structure $(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) \ -I$(INCLUDE_DIR) \ -I$(LIBS_DIR) \ $(SRC_FILES) \ -o $(BUILD_DIR)/debug-app # Release build - builds all .cpp files in current directory # Note: This assumes you run make from the directory containing .cpp files release: structure $(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) \ -I./includes \ -DNDEBUG \ $(SRC_FILES) \ -o $(BUILD_DIR)/release-app # Clean build artifacts clean: rm -rf $(BUILD_DIR)/debug-app $(BUILD_DIR)/release-app # Help target help: @echo "Available targets:" @echo " all - Build debug version (default)" @echo " debug - Build with debug flags" @echo " release - Build with release flags" @echo " structure - Create project directories" @echo " clean - Remove build artifacts" @echo " help - Show this help message" { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug", "program": "${workspaceFolder}/build/debug-app", "args": [], "cwd": "${workspaceFolder}" } ] } Файл конфигурации дебаггера launch.json нужно поместить в папку .vscode внутри проекта. А Makefile нужно положить в корень. Чтобы пользоваться Makefile'ом, в GNU/Linux есть команда make. После помещения всех файлов на свои места попробуйте написать в терминале make help. Если все сделано правильно, то терминал выдаст сводку по использованию файла. На этом подготовку среды можно завершить. ==== Компиляторы ==== > :?: В процессе изучения...