0 / 0 / 0
Регистрация: 07.09.2019
Сообщений: 23
|
||||||
1 | ||||||
Использование stdafx.h07.09.2019, 09:39. Показов 40881. Ответов 33
Добрый день (вечер). Я учусь на первом курсе. Мы начали изучать Си, а потому нам дали учебник по этому языку, а также сказали скачать Visual Studio 2010. Скачав его и немного на нем поработав, я понял, что запутался. По ряду причин (которые я сейчас назову) я перестал понимать на каком из языков (Си или C++) я пишу.
Первая причина: директива #include <stdio.h>. В учебнике по Си именно она используется для объявления стандартных ввода-вывода. Однако в Visual Studio на место неё встает #include "stdafx.h", которая, к слову, и вызывает stdio.h. Но если не использовать #include "stdafx.h", просто написать как в учебнике (#include <stdio.h>), то компилятор начинает ругаться. Например, вот эта программа
Вторая причина: Большинство операторов и синтаксических конструкций являются командами языка Си, а не C++(например printf() и scanf() вместо cin и cout, а также %d) По этим и некоторым другим причинам(например, формат файлов .cpp, что указывает на C++) я и запутался языках. Помогите, разъясните.
0
|
07.09.2019, 09:39 | |
Ответы с готовыми решениями:
33
stdafx.h и StdAfx.h файлы stdafx Подключение stdafx.h iostream, StdAfx.h |
Azazel-San
|
07.09.2019, 18:05
Использование stdafx.h
#21
|
0
|
"C with Classes"
|
|
07.09.2019, 18:17 | 22 |
Не по теме: мое такое же какое TheCalligrapher дал (да и ты вроде как того же мнения), есть параллель где две волнистые линии языка С и С++ пересекаются. но это разные языки и С++ не поддерживает все возможности языка С, на пересечении этих линий как раз можно использовать эти два языка вмести, это можно считать интерфейсом меж языкового взаимодействия
0
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
07.09.2019, 18:17 | 23 |
на самом деле было бы странно,
если твой не оч умный транслятор скомпилировал такой код. я подозреваю, что ты сам просто что-то путаешь. в отличие от языка си, где такой косяк - норма жизни, язык с++ явным образом запрещает конструкцию, с очевидным выходом за пределы диапазона массива. что мы и наблюдаем на практике: студия: Код
error C2117: 's': array bounds overflow Код
source_file.cpp:4:17: error: initializer-string for char array is too long char s[3] = "abc"; ^~~~~ но если все топовые компиляторы отказываются компилировать эту откровенно некорректную конструкцию, тогда что за компилятор у тебя? который с твоих слов, всё ж таки скомпилировал. ты компилятор с++ с компилятором си не перепутал?
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
07.09.2019, 18:20 | 24 |
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
07.09.2019, 18:29 | 26 |
И всё? Это какое-то принципиальное отличие, которое невозможно реализовать в с++ без существенного ухудшения кода?
Что-то не впечатляет.
0
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
07.09.2019, 18:39 | 27 |
это такое принципиальное отличие,
которое сделает сишный исходник непригодным для компиляции крестанутым компилятором. любому здравомыслящему человеку этого достаточно, что бы понимать: си и с++ - разные языки.
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
07.09.2019, 18:42 | 28 |
Нет. Любому здравомыслящему человеку понятно, что Си это подмножество С++ с мелкими синтаксическими различиями, на
которые можно не обращать внимания. Покажи мне код на Си, который нельзя за пару минут переделать так, чтоб он компилировался и там и там без потери функциональности.
1
|
Вездепух
12794 / 6671 / 1795
Регистрация: 18.10.2014
Сообщений: 16,890
|
|||||||||||
07.09.2019, 18:48 | 29 | ||||||||||
Если бы речь шла о банальном отсутствии контроля выхода за пределы массива, то и вот такое объявление тоже бы допускалось
0
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
07.09.2019, 19:12 | 31 |
видимо не каждый здравомыслящий понимает смысл понятия "подмножество".
если 'си' - подможество 'c++', значит код 'си' так же является кодом 'c++' иначе, 'си' не является подмножеством 'c++', даже несмотря на то, что у них много общего. по твоей ущербной логике получается, что с# или java - так же подмножество с++. ведь их исходники тоже можно переписать на с++ без потерь в функциональности. а при должной сноровке, и отсутствия явных противопоказаний по фичам - за довольно быстрый срок. про 2 минуты ты конечно погорячился.
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
07.09.2019, 19:16 | 32 |
С каких сторон, причём здесь философия? Вроде не об си-шарпах и прочих ява-скриптах речь идёт.
Да, можно написать на Си код, который не скомпилируется в С++, кто б спорил, но его рефакторинг - очень простая техническая задача. В с++ при переходе на новую версию компилятора зачастую проблем больше.
0
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
07.09.2019, 19:20 | 33 | |||||
variable length array сможешь быстро адаптировать?
0
|
zss
|
||||||
07.09.2019, 19:23
Использование stdafx.h
#34
|
||||||
0
|
07.09.2019, 19:23 | |
07.09.2019, 19:23 | |
Помогаю со студенческими работами здесь
34
Не найден файл stdafx.h Ошибка подключения stdafx.h stdafx.h: No such file or directory Ошибка stdafx в Dev C++ Ошибка stdafx.h: No such file or directory Fatal error: stdafx.h: No such file or directory Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |