Details

Title: Инструмент преобразования исходного кода на языке C++ стандарта "ISO/IEC 14882:2014" в стандарт "ISO/IEC 14482:2003": магистерская диссертация: 09.04.01
Creators: Илларионов Юлий Сергеевич
Scientific adviser: Ицыксон Владимир Михайлович
Organization: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и технологий
Imprint: Санкт-Петербург, 2017
Collection: Выпускные квалификационные работы; Общая коллекция
Subjects: Си (C); Интерфейсы; Коды
UDC: 004.438(043.3); 004.51(043.3); 004.056.55(043.3)
Document type: Master graduation qualification work
File type: PDF
Language: Russian
Level of education: Master
Speciality code (FGOS): 09.04.01
Speciality group (FGOS): 090000 - Информатика и вычислительная техника
DOI: 10.18720/SPBPU/2/v17-4125
Rights: Доступ по паролю из сети Интернет (чтение, печать, копирование)
Record key: RU\SPSTU\edoc\45050

Allowed Actions:

Action 'Read' will be available if you login or access site from another network Action 'Download' will be available if you login or access site from another network

Group: Anonymous

Network: Internet

Annotation

Магистерская диссертация посвящена рассмотрению возможностей автоматизации процессов миграции исходного кода, написанного согласно стандарту C++14 в исходный код в рамках стандарта C++03. В работе произведен краткий обзор отличий указанных стандартов, а также рассмотрены способы автоматического преобразования части нововведений C++14 в аналогичные по функциональности конструкции из C++03. Также в работе кратко описаны возможности по созданию инструментов для преобразования исходного кода, предоставляемых программным интерфейсом “Clang LibtTooling".

Document access rights

Network User group Action
ILC SPbPU Local Network All Read Print Download
Internet Authorized users SPbPU Read Print Download
-> Internet Anonymous

Table of Contents

  • ВВЕДЕНИЕ
  • 1 Актуальность работы
    • 1.1 Современное состояние языка C++
    • 1.2 Существующие примеры миграции кода
      • 1.2.1 Компиляторы в JavaScript
      • 1.2.2 Программный пакет ROSE
      • 1.2.3 DMS Software Reengineering Toolkit
      • 1.2.4 Компиляторы SystemC
  • 2 Поиск отличий в стандартах языка
    • 2.1 Выбор инструментария
    • 2.2 Список нововведений C++14 относительно C++03
      • 2.2.1 Семантика переноса
      • 2.2.2 Инициализация полей
      • 2.2.3 Шаблоны с переменным числом аргументов
      • 2.2.4 Списки инициализации
      • 2.2.5 Универсальная инициализация
      • 2.2.6 Статическая диагностика
      • 2.2.7 Вывод типов
      • 2.2.8 Альтернативный синтаксис функции
      • 2.2.9 Лямбда-выражения
      • 2.2.10 Угловые скобки
      • 2.2.11 Аргументы шаблона по-умолчанию для функций
      • 2.2.12 Псевдонимы шаблона и типа
      • 2.2.13 Внешние шаблоны
      • 2.2.14 Константа нулевого указателя
      • 2.2.15 Улучшенные перечисления
      • 2.2.16 Стандартный синтаксис атрибутов
      • 2.2.17 Обобщённые константные выражения
      • 2.2.18 Управление выравниванием
      • 2.2.19 Делегация конструкторов
      • 2.2.20 Наследование конструкторов
      • 2.2.21 Изменения в запрете явного преобразования
      • 2.2.22 Новые строковые литералы
      • 2.2.23 <<Необработанные>> строковые литералы
      • 2.2.24 Пользовательские литералы
      • 2.2.25 Явное указание методов по-умолчанию
      • 2.2.26 Явный запрет использования методов
      • 2.2.27 Получение размера полей без создания экземпляра
      • 2.2.28 <<Прозрачные>> пространства имен
      • 2.2.29 Улучшенные объединения
      • 2.2.30 Циклы по коллекции
      • 2.2.31 Явное замещение виртуальных функций и финальность
      • 2.2.32 Литералы двоичных чисел
      • 2.2.33 Шаблоны переменных
      • 2.2.34 Разделители разрядов
  • 3 Рассмотрение возможностей автоматической миграции
    • 3.1 Clang, как инструмент работы с исходным кодом
      • 3.1.1 Возможности программного интерфейса LibTooling
    • 3.2 Описание способов миграции
      • 3.2.1 Инициализация полей
      • 3.2.2 Универсальная инициализация
      • 3.2.3 Вывод типов
      • 3.2.4 Лямбда-выражения
      • 3.2.5 Псевдонимы шаблона и типа
      • 3.2.6 Улучшенные перечисления
      • 3.2.7 Делегация конструкторов
      • 3.2.8 Наследование конструкторов
      • 3.2.9 Изменения в запрете явного преобразования
      • 3.2.10 <<Необработанные>> строковые литералы
      • 3.2.11 Пользовательские литералы
      • 3.2.12 Явное указание методов по-умолчанию
      • 3.2.13 Явный запрет использования методов
      • 3.2.14 Получение размера полей без создания экземпляра
      • 3.2.15 Циклы по коллекции
      • 3.2.16 Явное замещение виртуальных функций и финальность
      • 3.2.17 Литералы двоичных чисел
      • 3.2.18 Шаблоны переменных
      • 3.2.19 Разделители разрядов
  • 4 Тестирование
    • 4.1 Реализация инструментов миграции
    • 4.2 Методика и результаты тестирования
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  • ПРИЛОЖЕНИЕ А. Таблица нововведений стандарта C++11
  • ПРИЛОЖЕНИЕ Б. Таблица нововведений стандарта C++14

Usage statistics

stat Access count: 247
Last 30 days: 0
Detailed usage statistics