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

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

Восстановить пароль Регистрация
 
vitkt
1 / 1 / 0
Регистрация: 23.08.2011
Сообщений: 19
21.07.2015, 09:35     Перенос кода на C++11 #1
Здравствуйте!

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

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

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

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

Создание кода программы с нуля!! создание кода C++ C++
Перенос кода из Pas в С/С++ C++
C++ Перенос битов
C++ Перенос кода с java на с++
C++ Перенос кода
перенос кода в С++ C++
Участок B кода выполняется позже, чем участок A кода, но почему-то B влияет на работоспособность A! Почему? C++
перенос курсора C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6456 / 3830 / 885
Регистрация: 30.01.2014
Сообщений: 6,626
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
C++/Haskell
 Аватар для ct0r
1549 / 568 / 39
Регистрация: 19.08.2012
Сообщений: 1,174
Завершенные тесты: 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
Ответ Создать тему
Опции темы

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