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

Перевод из C в С++ - C++

Восстановить пароль Регистрация
 
amerbek
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 5
14.09.2013, 15:34     Перевод из C в С++ #1
Здравствуйте, я делал проект в C, но вдруг требования поменялись, и теперь я должен перевести его в C++. Есть ли какой-нибудь простенький способ, если нет, то прошу приложить какую-нибудь литературу по данной теме...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2013, 15:34     Перевод из C в С++
Посмотрите здесь:

Перевод на С++ C++
C++ перевод в С
C++ Перевод из C++ в C
Перевод из 2 в 10 сс C++
C++ перевод из с++ в с
Перевод C++
Перевод C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ВАСИЛЕВС
555 / 478 / 60
Регистрация: 14.02.2012
Сообщений: 1,561
14.09.2013, 15:43     Перевод из C в С++ #2
amerbek, в принципе практически перевод не понадобится. Разве что изменить название инклудов и ещё по мелочи. Всё зависит от функций, которые использовались. Или же можно этот код закинуть в библиотеку, а обертку на С++ написать.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
14.09.2013, 15:46     Перевод из C в С++ #3
самое простое - ничего не изменять, а переименовать файлы с расширением *.c на *.cpp
amerbek
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 5
14.09.2013, 16:04  [ТС]     Перевод из C в С++ #4
А можно поконкретней про эти мелочи...
Вот код интеграла в C
взятый мной с википедии, какие изменения я должен внести, чтобы он работал в C++ компиляторе?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <math.h>
 
double f(double x){ //Подынтегральная функция
   return sin(x); //Например, sin(x)
}
 
double rectangle_integrate(double a, double b, int n, double (*f)(double) ){
   double result, h;
   int i;
 
   h = (b-a)/n; //Шаг сетки
   result = 0.0;
 
   for(i=1; i <= n; i++){
      result += f( a + h * (i - 0.5) ); //Вычисляем в средней точке и добавляем в сумму
   }
   result *= h;
 
   return result;
}
 
int main(void){
   double integral;
   integral=rectangle_integrate(0,2,100,f);
   printf("The value of the integral is: %lf \n", integral);
   return 0;
}
rublag
52 / 52 / 4
Регистрация: 06.02.2013
Сообщений: 156
14.09.2013, 16:05     Перевод из C в С++ #5
код для си почти всегда работает на c++, это не исключение.
amerbek
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 5
14.09.2013, 16:09  [ТС]     Перевод из C в С++ #6
rublag, дело в том, что мой проект часть большего проекта, поэтому всё должно быть написано одним языком, в этом то и проблема...
Kuzia domovenok
14.09.2013, 16:17
  #7

Не по теме:

Да заканчивай спорить! Если ты знаешь С++, сам поймёшь, надо изменять что-то или не надо!
А если не знаешь, тогда зачем споришь, ё-моё?!

amerbek
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 5
14.09.2013, 17:21  [ТС]     Перевод из C в С++ #8
С плюсами не знаком, затем и спрашиваю...
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
14.09.2013, 17:59     Перевод из C в С++ #9
Цитата Сообщение от amerbek Посмотреть сообщение
поэтому всё должно быть написано одним языком
написать одним языком, или написать в одном стиле? Это разные вещи. Тот код, который у Вас приведен можно не трогать вообще. И всё должно работать, если конечно работает в C
Если нужно не просто чтобы программа работала, а чтобы и стиль был C++, то заменить <stdio.h> на <iostream>, <math.h> на <cmath>, printf на std::cout и т.д.
amerbek
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 5
14.09.2013, 20:01  [ТС]     Перевод из C в С++ #10
Tulosba, спасибо, попробую...
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
15.09.2013, 00:09     Перевод из C в С++ #11
Цитата Сообщение от ВАСИЛЕВС Посмотреть сообщение
Разве что изменить название инклудов и ещё по мелочи.
Зачем менять include'ы?

Цитата Сообщение от rublag Посмотреть сообщение
код для си почти всегда работает на c++
Почти тут не просто так

Цитата Сообщение от amerbek Посмотреть сообщение
поэтому всё должно быть написано одним языком, в этом то и проблема...
Хм..
ВАСИЛЕВС
555 / 478 / 60
Регистрация: 14.02.2012
Сообщений: 1,561
15.09.2013, 19:18     Перевод из C в С++ #12
Цитата Сообщение от Qwertiy Посмотреть сообщение
Зачем менять include'ы?
Например ctype.h в C++ имеет имя cctype.h, а stdlib.h - cstdlib.h . О таких переименованиях я и писал. Или я не прав?
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
15.09.2013, 22:05     Перевод из C в С++ #13
Цитата Сообщение от ВАСИЛЕВС Посмотреть сообщение
Например ctype.h в C++ имеет имя cctype.h, а stdlib.h - cstdlib.h . О таких переименованиях я и писал. Или я не прав?
c++ версии заголовочных файлов идут без расширений. Префикс "c" указывает, что файл принадлежит библиотеке си, но идентификаторы при этом объявлены в пространстве имен std.
ВАСИЛЕВС
555 / 478 / 60
Регистрация: 14.02.2012
Сообщений: 1,561
15.09.2013, 22:15     Перевод из C в С++ #14
Цитата Сообщение от Tulosba Посмотреть сообщение
c++ версии заголовочных файлов идут без расширений.
Не обратил внимания, надо запомнить.
Цитата Сообщение от Tulosba Посмотреть сообщение
Префикс "c" указывает, что файл принадлежит библиотеке си, но идентификаторы при этом объявлены в пространстве имен std.
Это мне известно. Предполагаю, что в данном случае надо будет заменить имена гидеров, добавив "c", если используются функции с библиотеки Си.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2013, 23:10     Перевод из C в С++
Еще ссылки по теме:

C++ Перевод в 8-ю ЧС
C++ Перевод на С++
Перевод С++ в Си C++
Перевод из С++ в Си C++
Перевод с Си на С++ C++

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

Или воспользуйтесь поиском по форуму:
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
15.09.2013, 23:10     Перевод из C в С++ #15
Цитата Сообщение от ВАСИЛЕВС Посмотреть сообщение
Например ctype.h в C++ имеет имя cctype.h, а stdlib.h - cstdlib.h . О таких переименованиях я и писал. Или я не прав?
Ну про то что без расширения, уже сказали.
Такая замена, например <math.h> на <cmath> может привести к тому, что код не скомпилируется (по крайней мере в VS). Поэтому я и сказал, что вполне можно не менять include'ы.
Yandex
Объявления
15.09.2013, 23:10     Перевод из C в С++
Ответ Создать тему
Опции темы

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