Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vitkt
1 / 1 / 0
Регистрация: 23.08.2011
Сообщений: 19
#1

Перенос кода на C++11 - C++

21.07.2015, 09:35. Просмотров 246. Ответов 2
Метки нет (Все метки)

Здравствуйте!

Я столкнулся со следующей проблемой: есть проект под Android, большая часть которого написана на С++. В команде разработчиков возникло желание использовать возможности нового стандарта. После добавления соответствующих флагов (-std=gnu++11) проект собрался и даже запустился.

Однако, возник вопрос - насколько безопасны подобные изменения, могут ли всплыть какие-нибудь баги? Особенно в крупном проекте.

Существуют ли какие-либо инструкции или проверяющие утилиты по миграции существующего кода на новый стандарт?

Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2015, 09:35     Перенос кода на C++11
Посмотрите здесь:

Перенос кода из Pas в С/С++ C++
Перенос символов строки C++
C++ Перенос битов
C++ Перенос кода с java на с++
C++ Перенос кода на 64-битную платформу
Перенос массива в функцию C++
C++ Перенос кода
C++ Перенос переменной в класс
перенос кода в С++ C++
Перенос слов в консоли C++
перенос курсора C++
Перенос строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6820 / 4031 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
21.07.2015, 10:11     Перенос кода на C++11 #2
Цитата Сообщение от vitkt Посмотреть сообщение
могут ли всплыть какие-нибудь баги?
Могут, в случае, если, например, у вас есть библиотеки на С++, которые вы не можете перекомпилировать для С++11. Тогда при использовании их с проектом на С++11 чисто теоретически могут возникнуть проблемы из-за изменения ABI (например string больше не имеет права использовать COW). Но на практике всего этого может не случиться, т.к. разработчики позаботились об этом и обложили все такие места директивами условной компиляции для совместимости, и, если не компилировать в режиме строгого следования стандарту (но здесь возникает другая опасность, см. ниже), то все должно быть хорошо.
Цитата Сообщение от vitkt Посмотреть сообщение
Существуют ли какие-либо инструкции или проверяющие утилиты по миграции существующего кода на новый стандарт?
Я таких не встречал.

____
Про другую опасность: если мы используем реализацию cow-строки из С++03 в одном месте, и не включали с строгую поддержку С++11 в другом, то ABI не будет нарушено. Но в этом случае нельзя будет пользоваться гарантиями С++11 насчет внутреннего буфера std::string. Если покопаться, то можно найти еще пару-тройку таких несоответствий.

____
У меня тоже на поддержке много больших проектов. Мой совет - для legacy - этот переход того не стоит. Но если быть аккуратными, то ничего страшного не должно случиться. Вопрос только в том, есть ли у вас ресурсы эту аккуратность обеспечивать.

Добавлено через 6 минут
Вот подробнее: https://gcc.gnu.org/onlinedocs/libst..._dual_abi.html
ct0r
Игогошка!
 Аватар для ct0r
1710 / 612 / 42
Регистрация: 19.08.2012
Сообщений: 1,227
Завершенные тесты: 1
21.07.2015, 12:00     Перенос кода на C++11 #3
Цитата Сообщение от vitkt Посмотреть сообщение
Однако, возник вопрос - насколько безопасны подобные изменения, могут ли всплыть какие-нибудь баги? Особенно в крупном проекте.
Очень маловероятно. Обычно могут всплывать какие-то проблемы при смене компилятора или его версии.

Цитата Сообщение от vitkt Посмотреть сообщение
Существуют ли какие-либо инструкции или проверяющие утилиты по миграции существующего кода на новый стандарт?
Есть Clang C++ Modernizer http://clang.llvm.org/extra/clang-modernize.html
Yandex
Объявления
21.07.2015, 12:00     Перенос кода на C++11
Ответ Создать тему
Опции темы

Текущее время: 22:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru