Язык C

Руководство по обновленным стандартам.

Клеменс Бен «Язык C в XXI веке» ДМК Пресс, 2015 год. 376 стр., пер. с англ. А. А. Слинкина, O’Reilly (6,59 мб. pdf)

Языку C уже сорок лет и он является фундаментом для всех современных языков программирования, при этом до сих пор это современный и мощный язык, идеальный подходящий для создания эффективных и быстрых программ. За последние двадцать лет сам язык C и его окружение подверглись глубокому пересмотру, но многие книги по C так и остались на уровне прошлого десятилетия до выхода стандарта C99.

Эта книга начинается там, где другие заканчиваются, вы посмотрите, как изменилась функциональность, поддерживаемая любым компилятором, благодаря двум новым стандартам C, вышедшим со времен оригинального ANSI. Цель книги — закрыть пробелы существующие во многих учебниках по C: инструменты и окружение; библиотеки для работы со связанными списками и анализаторами XML; написание удобочитаемого кода с дружественным программным интерфейсом. Издание предназначено для программистов, имеющих опыт работы на каком-либо языке и обладающими базовыми знаниями о C. ISBN 978-5-97060-101-3

Оглавление книги

Часть I Окружение
Глава 1 Настраиваем среду для компиляции
Работа с менеджером пакетов
Компиляция программ на C в Windows
POSIX в Windows
Компиляция программ на C при наличии подсистемы POSIX
Компиляция программ на C в отсутствие подсистемы POS1X
Как пройти в библиотеку?
Несколько моих любимых флагов
Пути
Компоновка во время выполнения
Работа с файлами makefile
Задание переменных
Правила
Сборка библиотек из исходного кода
Сборка библиотек из исходного кода (даже если системный администратор против)
Компиляция C-программы с помощью встроенного документа
Включение файлов-заголовков из командной строки
Универсальный заголовок
Встроенные документы
Компиляция из stdin

Глава 2. Отладка, тестирование, документирование
Работа с отладчиком
Отладка программы как детективная история
Переменные GDB
Распечатка структур
Использование Valgrind для поиска ошибок
Автономное тестирование
Использование программы в качестве библиотеки
Покрытие
Встроенная документация
Doxygen
Грамотное программирование с помощью С WEB
Проверка ошибок
Ошибки и пользователи
Учет контекста, в котором работает пользователь
Как следует возвращать уведомление об ошибке?

Глава 3. Создание пакета для проекта
Оболочка
Замена команд оболочки их выводом
Применение циклов for в оболочке для обработки набора файлов
Проверка наличия файла
Команда fc
Файлы makefile и скрипты оболочки
Создание пакета с помощью Autotools
Пример работы с Autotools
Описание Makefile с помощью Makefileam
Скрипт configure

Глава 4. Управление версиями
Получение списка отличий с помощью diff
Объекты Git
Тайник.
Деревья и их ветви
Объединение
Перемещение
Дистанционные репозитории

Глава 5. Мирное сосуществование
Динамическая загрузка
Ограничения динамической загрузки
Процесс
Писать так, чтобы можно было понять
Функция-обертка
Контрабанда структур данных через границу
Компоновка
Python как включающий язык
Компиляция и компоновка
Условный подкаталог для Aut отаке
Distutils при поддержке Autotools

Часть II Язык

Глава 6. Ваш приятель — указатель
Автоматическая, статическая и динамическая память
Автоматическая
Статическая
Динамическая
Переменные для хранения постоянного состояния
Указатели без ntalloc
Структуры копируются, для массивов создаются псевдонимы malloc и игрища с памятью
Виноваты звезды
Все, что нужно знать об арифметике указателей
Typedef как педагогический инструмент

Глава 7. Несущественные особенности синтаксиса C, которым в учебниках уделяется чрезмерно много внимания
Ни к чему явно возвращать значение main
Пусть объявления текут свободно
Меньше приведений
Перечисления и строки
Метки, goto, switch и break
К вопросу о goto
Предложение switch
Нерекомендуемый тип float
Сравнение чисел без знака
Безопасное преобразование строки в число

Глава 8. Важные особенности синтаксиса C, которые в учебниках часто не рассматриваются
Выращивание устойчивых и плодоносящих макросов
Приемы работы с препроцессором
Проверочные макросы
Защита заголовков
Компоновка с ключевыми словами static и extern
Переменные с внешней компоновкой в файлах-заголовках
Ключевое слово const
Форма существительное—прилагательное
Конфликты
Глубина
Проблема char const

Глава 9. Текст
Безболезненная обработка строк с помощью asprintf
Безопасность
Константные строки
Расширение строк с помощью asprintf
Песньо strtok
Unicode
Кодировка для программ на C
Библиотеки для работы с Unicode
Пример кода

Глава 10. Улучшенная структура
Составные литералы
Инициализация с помощью составных литералов
Макросы с переменным числом аргументов
Безопасное завершение списков
Несколько списков
Foreadi
Векторизация функции
Позиционные инициализаторы
Инициализация массивов и структур нулями
Псевдонимы типов спешат на помощь
К вопросу о стиле
Возврат нескольких значений из функции
Извещение об ошибках
Гибкая передача аргументов функциям
Объявление своей функции по аналогии с print!
Необязательные и именованные аргументы
Доведение до ума бестолковой функции
Указатель на void и структура, на которую он указывает
Функции с обобщенными входными параметрами
Обобщенные структуры

Глава 11. Объектно-ориентированное программирование на C
Расширение структур и словарей
Реализация словаря
C без зазоров
Функции в структурах
V-таблицы
Область видимости
Закрытые элементы структуры
Перегружа
_Generic
Подсчет ссылок
Пример: объект подстроки
Пример: основанная на агентах модель формирования групп
Заключение

Глава 12. Параллельные потоки
Окружение
Составные части
ОрепМР
Компиляция для использования ОрепМР
Интерференция
Map-reduce
Несколько задач
Поточная локальность
Локаликзация нестатических переменных
Разделяемие ресурси
Библиотека pthread
Атомы C
Атомарные структуры

Глава 13. Библиотеки
GLib
Стандарт POSIX
Разбор регулярних виражений
Использование mmap для очень больших наборов данных
БиблиoтacaGNU Scientific Library
SQlite
Запроси
libxml и сURL
Эпилог

Приложение. Основные сведения о языке C
Структура
В C необходим зтап компиляцин, состоящнй нз одной команди
Существует стандартная бнблиотека, зточасть операцнонной системи
Существует преіфоцессор
Существуют комментарии двух видов
Нет ключевого слова print
Обьявления переменных
Любая переменная должна бить обьявлена
Даже функцни необходимо обьявлять или определять
Базовие типи можно агрегировать в массивы и структуры
Можно определять новые структурные типы
Можно узнать размер типа
Не существует специального типа строки
Функцни и вираження
Правила видимости в C очень прости
Функция main имеет особий смысл
Большая часть работи програм ми на C сводится к вычислению виражений
При вычислении функций используются копни входних аргументов
Выражения заканчиваются точкой с запятой
Есть много сокращенных способов записи арифметических операций
В C понятие истины трактуется расширительно
Результатом деления двух целых всегда является целое
В C имеется тернарный условный оператор
Ветвления и циклы несильно отличаются от других языков
Цикл for — просто компактная форма цикла while
Указатели
Можно напрямую запросить блок памяти
Массивы — это просто блоки памяти, любой блок памяти можно использовать как массив
Указатель на скаляр — это по существу массив с одним элементом
Существует специальная нотация для доступа к полям структур по указателю
Указатели позволяют изменять аргументы функции
Любой объект где-то находится, и, значит, на него можно указать
Глоссарий
Библиография
Предметный указатель

Скачать техническую литературу бесплатно6,59 мб. pdf

Похожая литература