Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 12.02.2012
Сообщений: 23
1

Совместимость C и C++

30.08.2019, 13:28. Показов 3219. Ответов 6

Здравствуйте!
Если написать программу на C, компилятор C++ её скомпилирует? Есть ли совместимость от C к C++?

Спасибо!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2019, 13:28
Ответы с готовыми решениями:

Совместимость с W8
Стоит W8 устанавливаю прогу по совместимости на х32, получится через виртуальную машину запустить...

Совместимость
Имеется мат.плата m2n-x plus в скором времени планирую ставить видеокарту серии ge force gtx 500...

Совместимость xp и 7
Всем добра друзья. У меня такой вопрос, есть старенькая webка genius VideoCAM Express V2, попытался...

Совместимость
Скажите почему разные программы и драйвера не устанавливаются на windows 7?Пишет проблемы с...

6
913 / 591 / 291
Регистрация: 22.02.2018
Сообщений: 1,743
Записей в блоге: 2
30.08.2019, 13:34 2
Цитата Сообщение от fangly Посмотреть сообщение
C++ её скомпилирует?
Скомпилирует, никуда не денется. Только некоторые компиляторы чувствительны к расширению - code.c или code.cpp. Если в файле с расширением cpp будет исходник, написанный на СИ, некоторые могут и ругнуться. А некоторые IDE (например VC или Embarcadero Builder) при создании нового проекта спрашивают, какой код будет компилиться.
1
2718 / 1883 / 558
Регистрация: 05.06.2014
Сообщений: 5,489
30.08.2019, 13:47 3
Цитата Сообщение от fangly Посмотреть сообщение
Если написать программу на C, компилятор C++ её скомпилирует? Есть ли совместимость от C к C++?
По большей части совместимость есть. Но есть несколько но:
1) Некоторые сишные конструкции конкретный C++ компилятор как бы поддерживает, но по стандарту не должен (например, VLA массивы int array[rand()];).
2) Некоторые конструкции и сишный компилятор по стандарту поддерживать не должен, но вместо этого только пальцем грозит. А C++-компилятор вместо того чтобы грозить пальцем, сразу шлет подальше (неявный каст double*->int* к примеру).
3) Ну и наконец, есть узкий класс конструкций которые Си официально поддерживает, а плюсы нет (неявный каст void*->int*).

Короче, при переходе с Си на C++ ожидайте мелкие шероховатости.
1
TrollHammer
30.08.2019, 13:58
  #4

Не по теме:

Есть еще одно различие - Си в чистом виде это ассемблер процессора, но более понятный для человека, а концепция программирования та же самая - обращение к ячейкам памяти, получение адресов, переброски блоков из одного участка памяти в другой, низкоуровневые арифметические операции. С++ уже ЯП высокого уровня с реализацией неких объектов - классов и т. д. (В моем понимании различия этих языков - начинал знакомство с Си еще на ZX Spectrum, и там то, что Си - есть "ассемблер" очень сильно ощущается)

0
Operok
30.08.2019, 14:49
  #5

Не по теме:

C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main()
{
    int class; 
    scanf("%d", &class);
    printf("square: %d", class * class);  
    return 0;
}

0
Don't worry, be happy
17143 / 10026 / 1933
Регистрация: 27.09.2012
Сообщений: 24,954
Записей в блоге: 1
30.08.2019, 16:49 6
Цитата Сообщение от fangly Посмотреть сообщение
Если написать программу на C, компилятор C++ её скомпилирует?
Если скомпилирует, то это программа на C++.
0
С чаем беда...
Эксперт CЭксперт С++
9074 / 4606 / 1250
Регистрация: 18.10.2014
Сообщений: 10,306
30.08.2019, 19:50 7
Цитата Сообщение от fangly Посмотреть сообщение
Если написать программу на C, компилятор C++ её скомпилирует? Есть ли совместимость от C к C++?
Нет, в общем случае совместимости нет. Количество несовместимостей в направлении от С к С++ довольно велико, даже если рассматривать только "классические" стандартные версии языков. А уж в современном С (С99, С11) таких несовместимостей еще больше.

Элементарный пример, в котором на первый взгляд нет ничего бросающегося а глаза

C
1
2
3
4
int main(void)
{
  char s[4] = "1234";
}
Однако это - корректная программа на С, но не корректная программа на С++.

Цитата Сообщение от TrollHammer Посмотреть сообщение
Есть еще одно различие - Си в чистом виде это ассемблер процессора, но более понятный для человека,...С++ уже ЯП высокого уровня...
Язык С был "ассемблером процессора" в 70-е годы прошлого века. И уже к 80-м годам прошлого века он перестал им быть. Нет никакой разницы в "высоте уровня" стандартных С и С++.

Цитата Сообщение от TrollHammer Посмотреть сообщение
Скомпилирует, никуда не денется. Только некоторые компиляторы чувствительны к расширению - code.c или code.cpp.
Это грубейше не верно.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2019, 19:50

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Совместимость
Я хочу установить себе антивирус в Windows 8.1..но у меня выходит ошибка &quot; У этой программы есть...

Совместимость с ОС
Здравствуйте. Выбрал диск Western Digital WDBEMM0010BBK-EEUE. В характеристиках написано: Будет...

Совместимость
Привет народ, не хочется выкинуть на ветер 3-4к, поэтому прошу помощи. Есть мать P5QL, проц Core 2...

Не совместимость!
Добрый день! купил видеокарту (NVIDIA GEFORCE GT 610) б/у на материнку ga-f2a88xm-ds2 GIGABYTE c...

не совместимость
Добрый день! купил видеокарту (NVIDIA GEFORCE GT 610) б/у на материнку ga-f2a88xm-ds2 GIGABYTE c...

Совместимость
Подойдёт ли материнская плата Gigabyte Z370P D3 к процессору Intel Core i5-8400?


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

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

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