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

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

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

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

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

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

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

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

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

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2015, 09:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перенос кода на C++11 (C++):

Перенос кода - C++
Подскажите пожалуйста в чём проблема? имею код: func.cpp #ifndef LAB4_H #define LAB4_H #include "stdafx.h" ...

перенос кода в С++ - C++
var e,x,t,s:real; n:integer; begin repeat write('|x|<1 x='); read(x); until abs(x)<1; repeat write('0<e<1 e='); ...

Перенос кода из Pas в С/С++ - C++
Здравствуйте. Есть программа на паскале, которая случайным образом выдает 3 слова из текстового файла без повторения uses Crt; ...

Перенос кода с java на с++ - C++
Всем привет я навичок помогите перевести этот код с java на с++ import java.util.Random; public class Runner { ...

Перенос кода на 64-битную платформу - C++
Пытаюсь разобраться с проблемами на переноса кода на 64битную платформу. В сети встретил вот такую конструкцию. #ifdef _WIN64 ...

Перенос кода с Паскаля на Си. Часть 1 - C++
Есть задача, для решения которой написано консольное приложение на Pascal. Авторов было несколько и они не были программистами, откуда...

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

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

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

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

Цитата Сообщение от vitkt Посмотреть сообщение
Существуют ли какие-либо инструкции или проверяющие утилиты по миграции существующего кода на новый стандарт?
Есть Clang C++ Modernizer http://clang.llvm.org/extra/clang-modernize.html
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2015, 12:00
Привет! Вот еще темы с ответами:

Перенос переменных из кода на python в код на С++ - C++
Объявил переменную а через PyRun_SimpleString(а=1) Как теперь сделать так, чтобы выводилось сообщение "Оно равно 1" через if...

перенос кода из VB - C++ Builder
Подскажите, как перенести данный код из VB в Builder? myhead = createobject('eapi.head') myhead.open set myresultset =...

Перенос кода C# на Delphi - C#
Необходимо перенести одну функцию с С# на Delphi. Вроде бы все сделал но подозреваю что что-то не так. Функция работает, но не совсем так...

Перенос кода из vb 6 в vb 2008 - Visual Basic .NET
здравствуйте, у меня возникла серьёзная проблема. Сам я с vb знаком постольку поскольку (в основном delphi) но возникла необходимость в...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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