Язык C в XXI веке — Язык С — не просто фундамент всех современных языков программирования, он и сам — современный язык, идеальный для написания эффективных приложений передового уровня. Последние 20 лет С не стоял на месте. Сам язык и окружающая его экосистема подвергаются пересмотру. Эта книга начинается там, где другие заканчиваются. В ней рассказано, как изменилась функциональность, поддерживаемая любым компилятором, благодаря двум новым стандартам С, вышедшим со времен оригинального ANSI. Цель книги - рассмотреть то, чего нет в других учебниках по С: инструменты и окружение; библиотеки для работы со связанными списками и анализаторами XML; написание удобочитаемого кода с дружественным программным интерфейсом. Издание предназначено для программистов, имеющих опыт работы на каком-либо языке и обладающими базовыми знаниями о С.
Название: Язык C в XXI веке Автор: Клеменс Бен Издательство: ДМК-Пресс Год: 2015 Страниц: 376 Формат: PDF Размер: 6,92 МБ ISBN: 978-5-97060-101-3 Качество: Отличное Язык: Русский
Содержание:
Предисловие Часть 1. Окружение Глава 1. Настраиваем среду для компиляции Работа с менеджером пакетов Компиляция программ на С в Windows POSIX в Windows Компиляция программ на С при наличии подсистемы POSIX Компиляция программ на С в отсутствие подсистемы POSIX Как пройти в библиотеку? Несколько моих любимых флагов Пути Компоновка во время выполнения Работа с файлами makefile Задание переменных Правила Сборка библиотек из исходного кода Сборка библиотек из исходного кода (даже если системный администратор против) Компиляция С-программы с помощью встроенного документа Включение файлов-заголовков из командной строки Универсальный заголовок Встроенные документы Компиляция из stdin Глава 2. Отладка, тестирование, документирование Работа с отладчиком От лад ка программы как детективная история Переменные GDB Распечатка структур Использование Valgrind для поиска ошибок Автономное тестирование Использование программы в качестве библиотеки Покрытие Встроенная документация Doxygen Грамотное программирование с помощью CWEB Проверка ошибок Ошибки и пользователи Учет контекста, в котором работает пользователь Как следует возвращать уведомление об ошибке? Глава 3. Создание пакета для проекта Оболочка Замена команд оболочки их выводом Применение циклов for в оболочке для обработки набора файлов Проверка наличия файла Команда fc Файлы шakefi le и скрипты оболочки Создание пакета с помощью Autotools Пример работы с Autotools Описание Makefi le с помощью Makefile.am Скрипт configure Глава 4. Управление версиями Получение списка отличий с помощью diff Объекты Git Тайник Деревья и их ветви Объединение Перемещение Дистанционные репозитории Глава 5. Мирное сосуществование Динамическая загрузка Ограничения динамической загрузки Процесс Писать так, чтобы можно было понять Функция-обертка Контрабанда структу р дан ных через границу Компоновка Python как включающий язык Компиляция и компоновка Условный подкаталог для Automake Distuti ls при поддержке Autotools Часть II. Язык Глава 6. Ваш приятель - указатель Автоматическая, статическая и динамическая память Автоматическая Статическая Динамическая Переменные для хранения постоянного состояния Указатели без malloc Структуры копируются, для массивов создаются псевдонимы malloc и игрища с памятью Виноваты звезды Все, что нужно знать об арифметике указателей Typedef как педагогический инструмент Глава 7. Несущественные особенности синтаксиса С которым в учебниках уделяется чрезмерно много внимания Ни к чему явно возвращать значение из maiп Пусть объявления текут свободно Меньше приведений Перечисления и строки Метки, goto, switch и break К вопросу о goto Предложение switch Нерекомендуемый тип float Сравнение чисел без знака Безопасное преобразование строки в число Глава 8. Важные особенности синтаксиса С, которые в учебниках часто не рассматриваются Выращивание устойчивых и плодоносящих макросов Приемы работы с препроцессором Проверочные макросы Защита заголовков Компоновка с ключевыми словами static и exterп Переменные с внешней компоновкой в файлах-заголовках Ключевое слово const Форма существительное-прилагательное Конфликты Глубина Проблема char const ** Глава 9. Текст Безболезненная обработка строк с помощью asprintf Безопасность Константные строки Расширение строк с помощью asprintf Песнь о strtok Unicode Кодировка для программ на С Библиотеки для работы с Unicode Пример кода Глава 10. Улучшенная структура Составные литералы Инициализация с помощью составных литералов Макросы с переменным числом аргументов Безопасное завершение списков Несколько списков Foreach Векторизация функции Позиционные инициализаторы Инициализация массивов и структур нулями Псевдонимы типов спешат на помощь К вопросу о стиле Возврат нескольких значений из функции Извещение об ошибках Гибкая передача аргументов функциям Объявление своей функции по аналогии с printf Необязательные и именованные аргументы Доведение до ума бестолковой функции Указатель на void и структура, на которую он указывает Функции с обобщенными входными параметрами Обобщенные структуры Глава 11. Объектно-ориентированное программирование на С Расширение структур и словарей Реализация словаря С без зазоров Функции в структурах V-таблицы Область видимости Закрытые элементы структуры Перегрузка _Generic Подсчет ссылок Пример: объект подстроки Пример: основанная на агентах модель формирования групп Заключение Глава 12. Параллельные потоки Окружение Составные части OpenMP Компиляция для использования OpenMP Интерференция Map-reduce Несколько задач Поточная локальность Локализация нестатических переменных Разделяемые ресурсы Атомы Библиотека pthread Атомы С Атомарные структуры Глава 13. Библиотеки GLib Стандарт POSIX Разбор регулярных выражений Использование mmap для очень больших наборов данных Библиотека GNU Scientific Library SQLite Запросы libxml и с URL Эпилог Приложение. Основные сведения о языке С Структура В С необходим этап компиляции, состоящий из одной команды Существует стандартная библиотека, это часть операционной системы Существует препроцессор Существуют комментарии двух видов Нет ключевого слова print Объявления переменных Любая переменная должна быть объявлена Даже функции необходимо объявлять или определять Базовые типы можно агрегировать в массивы и структуры Можно определять новые структурные типы Можно узнать размер типа Не существует специального типа строки Функции и выражения Правила видимости в С очень просты Функция main имеет особый смысл Большая часть работы программы на С сводится к вычислению выражений При вычислении функций используются копии входных аргументов Выражения заканчиваются точкой с запятой Есть много сокращенных способов записи арифметических операций В С понятие истины трактуется расширительно Результатом деления двух целых всегда является целое В С имеется тернарный условный оператор Ветвления и циклы несильно отличаются от других языков Цикл for - просто компактная форма цикла while Указатели Можно напрямую запросить блок памяти Массивы - это просто блоки памяти, любой блок памяти можно использовать как массив Указатель на скаляр - это по существу массив с одним элементом Существует специальная нотация для доступа к полям структур по указателю Указатели позволяют изменять аргументы функции Любой объект где-то находится, и, значит, на него можно указать Глоссарий Библиография Предметный указатель