Компиляция программы, написанной на C, компилятором C++ [дубликат]

85
03 августа 2019, 17:30

На данный вопрос уже ответили:

  • Какие элементы С являются неподдерживаемыми в С++? 7 ответов

Я программирую на языке C примерно с октября. Сейчас я приступил к изучению языка C++. Я нашёл в интернете хорошую статью на тему "Основные отличия языка программирования C++ от языка C". Мой вопрос заключается в том, если я скомпилирую исходный код, написанный на языке C, компилятором gcc (C++), меняя при этом в коде только явное приведение некоторых типов (например, так:

char *k = malloc(x * sizeof(char)); //код на C
char *k = (char *) malloc(x * sizeof(char)); //код на C++

и не меняя практически больше ничего (в том числе не меняя библиотеку стандартного ввода и вывода stdio.h на iostream), будет ли данный код успешно выполняться? Или есть какие-то вещи, которые строго должны быть написаны на языке C++ по-другому в отличие от C? Насколько я знаю, язык C++ имеет строгий синтаксис. К примеру, я в статье прочитал, что в C++ немного по-другому объявляются указатели, так же используется какая-то функция vector вместо malloc / realloc / calloc, и так далее. Если я не буду этого учитывать и всё-равно буду пользоваться функцией malloc, например, то будет ли такая программа, скомпилированная на языке С++ успешно работать?

Возможно, мой вопрос некорректный и слегка глуп, нужно срочно разобраться именно с языком программирования C++ на основе знаний языка C для выполнения некоторой задачи в ближайшее время.

Answer 1

Вместо malloc/free из C в C++ используются new/new[]/delete/delete[]. Поэтому просто так указанный в вопросе код с malloc C++ компилятором компилироваться не будет, нужно подключить заголовочный файл cstdlib. Но работать программа должна благополучно, если скомпилируется. C++ обратно совместим с C в основном.

В принципе узнать это можно было просто запустив g++ -o main main.cpp

READ ALSO
Базовый класс Array и производные классы SortArray и XorArray

Базовый класс Array и производные классы SortArray и XorArray

Помогите закончить программу пожалуйстаНеобходимо создать базовый класс Array с виртуальными методами сложения и поэлементной обработки...

129
Что означает знак “&” в этой строке?

Что означает знак “&” в этой строке?

Что означает знак "&" в этой строке?

140