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

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

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

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

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

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

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

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

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

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

перенос кода в С++ - 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='); ...

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

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

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

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

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

Вынести основную часть кода кода в отдельную функцию - C++
помогите пожалуйста переделать это на функцию... #include <locale.h> #include <conio.h> int main() { setlocale(0,""); float...

Создание кода программы с нуля!! создание кода C++ - C++
ВОТ УСЛОВИЕ : Для данного вещественного x,a,b,c найти значение следующей функции f,принимающей вещественное задания: ...

Перенос строки - C++
Здравствуйте.Основная задача:Разделить консольный экран на 2 части (виртуально) т.е что бы текст определенный печатался в левой...

Перенос битов - C++
Ввести число, перенести все еденичные биты в середину разрядной сетки.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
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
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 1
21.07.2015, 12:00     Перенос кода на C++11 #3
Цитата Сообщение от vitkt Посмотреть сообщение
Однако, возник вопрос - насколько безопасны подобные изменения, могут ли всплыть какие-нибудь баги? Особенно в крупном проекте.
Очень маловероятно. Обычно могут всплывать какие-то проблемы при смене компилятора или его версии.

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

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