Перейти к содержанию
Обновление форума ×
АнимеФорум

С, С++, Pascal, Basic, Assembler и другие языки программирования, hex-редакторы


PanicPanic

Рекомендуемые сообщения

Варианта два:
1. Либо создаёшь проект, который Студия понимает как проект и умеет с ним работать (в т.ч. компилить и билдить).
2. Либо, если ты просто отдельный CPP файл хочешь скомпилить - используешь компилятор из командной строки.

Для твоего случая проект создаётся просто (у меня правда студия 2005-я, в 2008-й может быть чуток иначе).
Запускаешь среду, в меню выбираешь File/New/Project.
Ищешь в дереве Visual C++, раскрываешь, там ищешь Win32, кликаешь. Выбираешь тип проекта, в твоём случае это будет "Win32 Console Application". Указываешь имя проекта.
На следующем шаге ищешь "свойства проекта" и там выставляешь "Empty Project".
По завершению получишь пустой проект.
На панели "Solution Explorer" (вызывается или по Ctrl+Alt+L, либо из меню View по соответствующему имени) видишь список подкатегорий для файлов проекта, там правый клик в Source Files, Add New Item, ищешь в появившемся диалоге "C++ File (.cpp)". Указываешь имя, добавляешь файл в проект и в нём пишешь код программы.

------------------

#include <iostream> - без '.h'.

'cout' просто так не получится использовать, оно находится в области имён 'std'. Нужно либо явно каждый раз указывать 'std::cout', либо после инклуда добавить строчку 'using namespace std;'. Изменено пользователем Рыб (смотреть историю редактирования)
Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 232
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

*_* Как быстр... Слушай прекланяюсь перед ствоим гением... Спасибо огромнейшее... хотя прога не сработала даже с твоими советами... но главное компилируется... Прости еще один вопрос ты не знаешь литератру, которую я могу почитать, а то судя по той что я скачал -___- пример не работает. Нужна литература по VC++


Вот кстати ошибка : e:\program files\уроки\учимся3\учимся3\урок.cpp(4) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

оу честно не знаю что есть int но постави его перд функцией я заставил заработать програму... ток теперь как бы мне получить резульатт... т.е. все замечательно проверка сделана -___- а где мне посмотреть как оно работает.


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

Ужас еще вопрос, как перейти на старый способ включения файлов ну <iostream.h> Изменено пользователем Nicholas D. Wolfwood (смотреть историю редактирования)

[ACROSS]

[Кантри ритм] team

Повторяйте за мной... НАША ЗЕМЛЯ СОЗДАНА ИЗ ЛЮБВИ И МИРА ,V..

Ссылка на комментарий
Поделиться на другие сайты

Какая сейчас есть обучающая литература по С++ не знаю, я очень давно с этим языком знакомился. В качестве "библии" в любом случае надо иметь - Бьерн Страуструп, "Язык С++", издание какое-нибудь из последних - но это скорее как справочник, а не как учебник.

Посмотри в магазинах учебники именно по С++, без привязки к какой-то определённой среде разработки. Если возникают сложности именно со Студией, то можно и по этой теме отдельную книжку купить, но как правило среду и без книжек постепенно осваиваешь по статьям из инета, по советам с форумов, там в общем то нет ничего сложного и даже методом "тык+хелп" можно освоить.

Вот тут - [url="http://rsdn.ru/" target="_blank" rel="nofollow">http://rsdn.ru/[/url] .
В разделе "Статьи/средства разработки/MS Visual Studio/Отладка" очень советую прочитать первые 4 статьи из подраздела "Использование отладчика в Visual C++". Можно даже не вникать поначалу, просто пробежаться, что бы уловить какие вообще возможности по отладке имеются.
Прямой линк на подраздел - [url="http://rsdn.ru/article/vcpp/vcdebug_.xml" target="_blank" rel="nofollow">http://rsdn.ru/article/vcpp/vcdebug_.xml[/url] .

---------------------------------

Что бы результат задержался на экране надо консоль чем-нибудь тормознуть, например ожиданием нажатия клавиши пользователем.
Для этого можно использовать метод [i]getch()[/i].

Eсли видишь какой-нибудь незнакомый метод (например тот, что выше указан), то запускаешь MSDN, ищешь, выбираешь из найденного ту статью, которая соответствует твоему языку, читаешь статью и там всегда сказано в каком хидере находится данный метод. В данном случае надо подключить заголовочный файл [i]conio.h[/i].

Т.е. в итоге у тебя в программу добавится две строчки.
Перед main() - #include <conio.h>.
Перед 'return 0' появится строка - getch().

--------------------------------

[quote name='Nicholas D. Wolfwood' post='1967897' date='21 January 2008, 23:45']Ужас еще вопрос, как перейти на старый способ включения файлов ну <iostream.h>[/quote]
Такого файла в поставке Студии нет, есть просто 'iostream'. Изменено пользователем Рыб (смотреть историю редактирования)
Ссылка на комментарий
Поделиться на другие сайты

Спасибо за совет... во только понять не могу одно..

Вот деректива #Include вводит содержимое файла, что записано в треуголных скобках.
Почему iostream пишеться без h, а выше обозначеный conio с h ведь поидее это два файла и они должны одинаково вскрываться что то типа того.

Заранее благодарю

[ACROSS]

[Кантри ритм] team

Повторяйте за мной... НАША ЗЕМЛЯ СОЗДАНА ИЗ ЛЮБВИ И МИРА ,V..

Ссылка на комментарий
Поделиться на другие сайты

[b]Nicholas D. Wolfwood[/b],
Для компилятора расширение файла не имеет ровным счётом никакого значения. Так сложилось исторически.
Ссылка на комментарий
Поделиться на другие сайты

Странна, что же тогда такое iostream которому не нужно расширение и которое должно поидее быть файлом но им не является... почему в учебниках по С++ iosream записывается с расширением h.

И еще вопрос имеет ли смысл использовать тип данных int не заботясь о памяти или все же стоит все же пользоваться Short int и long int Изменено пользователем Nicholas D. Wolfwood (смотреть историю редактирования)

[ACROSS]

[Кантри ритм] team

Повторяйте за мной... НАША ЗЕМЛЯ СОЗДАНА ИЗ ЛЮБВИ И МИРА ,V..

Ссылка на комментарий
Поделиться на другие сайты

[quote name='Nicholas D. Wolfwood' post='1968103' date='22 January 2008, 11:06']Странна, что же тогда такое iostream которому не нужно расширение и которое должно поидее быть файлом но им не является... почему в учебниках по С++ iosream записывается с расширением h.[/quote]
Почему файлом не является? В каталоге установки студии лежит именно файл 'iostream'.
[url="http://www.progz.ru/forum/lofiversion/index.php/t28426.html" target="_blank" rel="nofollow">http://www.progz.ru/forum/lofiversion/index.php/t28426.html[/url]
Спойлер
[quote]По Стандарту C++ (ISO/IEC 14882, Standard for the C++ Programming Language) правильно использовать <iostream>. Тем не менее, большинство современных сред разработки всё же поддерживают <iostream.h>, который является deprecated (не рекомендованным).

Общая рекомендация проста: всегда используйте <iostream>, т.к. <iostream.h> официально не поддерживается и может пропасть в будущих версиях реализаций Standard C++ library. Более того, расширение .h для файлов Standard C++ library не используется уже почти 10 лет.

Вот основные отличия <iostream> от <iostream.h>:
1. <iostream> содержит щаблоны классы, которые поддерживают как обычные символы (char), так и "широкие" юникодные (wchar_t). <iostream.h> поддерживает только обычные символы.
2. Интерфейс <iostream> менялся с течением времени - в ходе естественного развития языка C++ и Standard C++ library. Интерфейс <iostream.h> остаётся неизменным уже давно.
3. Классы из <iostream> входят в пространство имён std, в то время как классы из <iostream.h> находятся в глобальном пространстве имён.[/quote]


[quote name='Nicholas D. Wolfwood' post='1968103' date='22 January 2008, 11:06']И еще вопрос имеет ли смысл использовать тип данных int не заботясь о памяти или все же стоит все же пользоваться Short int и long int[/quote]
Вопрос непонятен ;). Изменено пользователем Рыб (смотреть историю редактирования)
Ссылка на комментарий
Поделиться на другие сайты

Эммм ну переменной можно задать тип данных int как я понял имеет 16 разрядов (-32 768 до 32 767 знаков) или 32(-2 147 483 до 2 147 483 647 знаков) и полностью повторяет
типы данных short int и long int, Но пишется короче и запутаться сложнее... так можно юзать только тип Int везде или к каждой переменной подходить нужно индивидуально продумывая ее размер.

[ACROSS]

[Кантри ритм] team

Повторяйте за мной... НАША ЗЕМЛЯ СОЗДАНА ИЗ ЛЮБВИ И МИРА ,V..

Ссылка на комментарий
Поделиться на другие сайты

[b]Nicholas D. Wolfwood[/b], тип int зависит от системы и может иметь разный размер (int равен машинному слову). short int имеет 16 разрядов, long int 32 разряда, использовать short особого смысла обычно не имеет, ибо по умолчанию большинство компиляторов ради скорости выделяют под переменную машинное слово (32 бита для x86 и 64 для x86_64). Изменено пользователем niiro dzyaki (смотреть историю редактирования)
[ Last Exile ] [ Моран жив! ] [ Fallout ] [ Админы ] [ Дядьки ] Teams [奇跡を信じて団 ]
Ссылка на комментарий
Поделиться на другие сайты

Вопрос существует оператор приведения к типу static_cast
Хмм можете объяснить его значение в програмировании... я просто не совсем понимаю... зачем изменять тип переменных, когда он уже был допустим обозначен в функции

void FloatDiv(int x, int y)
{
float a = (float)x;
float b = static_cast<float>(y);
float c = a/b;
cout << "c: " << c << "\n";
}

[ACROSS]

[Кантри ритм] team

Повторяйте за мной... НАША ЗЕМЛЯ СОЗДАНА ИЗ ЛЮБВИ И МИРА ,V..

Ссылка на комментарий
Поделиться на другие сайты

Приведение типов достаточно широко применяется. Например приведение указателя на базовый класс к указателю на производный и обратно. Операции с void*.

P.S.: столкнёшься на практике, станет очевидно. Изменено пользователем Рыб (смотреть историю редактирования)
Ссылка на комментарий
Поделиться на другие сайты

[b]Nicholas D. Wolfwood[/b],
Я, поскольку ответил на конкретный вопрос про расширение, - имел в виду только то, что если переименовать iostream в, скажем, xxx.nnn то хуже работать он от этого не станет, просто в программах придётся писать #include <xxx.nnn>. Переименовали его потому что им так захотелось в связи с развитием языка и появлением стандарта, в котором про просто iostream.h ничего не сказано. Поэтому в том же, например, VS.NET (до 2005) при попытке использовать "старый" iostream.h выдавалось предупреждение о том, что в последующих версиях его может и не быть, так что, мол, пишите сразу правильно. Потом они просто выполнили своё обещание.

Насчёт приведения типов... Я думаю лучше будет понятно, если посмотреть на другие языки. Например, на PHP с его нестрогой типизацией. В нём хотя в принципе есть разница между типами данных, но можно спокойно присваивать одной и той же переменной данные разных типов. Например, в C/C++ не получится написать $a = 'текст'; $a = 324234, а там это в порядке вещей. Мало того, с переменными можно делать всё что угодно независимо от их типов. Можно сложить, умножить, разделить текст на число, склеить их и наоборот. C++ же язык с более строгой типизацией. Поэтому если у нас есть две переменные разных типов, то даже если физически они представлены одним и тем же числом байт, - мы можем выполнять операции только между одинаковыми типами. Ну или в случае с перегруженными операторами - только с заданными нами. Более того, если мы складываем, скажем int с int'ом и int со float'ом, что всё же допустимо в языке, то на самом деле это две совершенно разных операции (там происходит неявное преобразование типа). Явное приведение типов нужно тогда, когда мы точно уверены, что нам нужно выполнить операцию над разными типами и это не ошибка. Или когда нас крайне сильно интересует, чтобы данные были преобразованы в нужный нам тип до какой-то операции.
В приведённом тобой примере функция получает на входе целочисленные переменные, а выводит результат деления чисел с плавающей запятой. Если бы мы просто написали int a = 3; int b = 2; float c = a / b, то на самом деле деление чисел a и b было бы целочисленным. Т.е. мы получили бы ответ вовсе не 1.5, а 1 из-за округления.
Для чего конкретно static_cast'ы не помню, не юзал.
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
Небольшой вопрос по с++.
Очень часто встречающаяся задача - перегон строки в число. При этом требуется проверка, возможен ли такой перегон в принципе. Для проверки на соответствие int мну нарыл функцию atoi(char*), которая, ежели верить хелпам, возвращает 0 когда преобразование в int невозможно. Вставил, попробовал - затыкается на дробных значениях. Например, 3.6 в инт не переделать, но проверку atoi почему-то проходит. Это глюк, или так и должно быть?

Если долго всматриваться в бездну, можно неплохо провести время.

Ссылка на комментарий
Поделиться на другие сайты

Вы не поняли вопроса, но всё равно спасибо.

Если долго всматриваться в бездну, можно неплохо провести время.

Ссылка на комментарий
Поделиться на другие сайты

У меня преобразование при помощи atoi работает как и заявлено в документации.
atoi("3.6") = 3
atoi("-3.6") = 3
atoi("zzz") = 0
atoi("3") = 3 Изменено пользователем Рыб (смотреть историю редактирования)
Ссылка на комментарий
Поделиться на другие сайты

[b]Рыб[/b], всё, уже разобрался, я и составители хелпа не поняли друг друга. Функция возвращает не ноль, если может хоть какой-то кусок в начале перегнать в инт. Я искал функцию, которая всю строку анализирует. Есть ли такая в стандартном наборе?
ЗЫ Кстати, у меня atoi("-3.6") = -3 Изменено пользователем Shinsaku-To (смотреть историю редактирования)

Если долго всматриваться в бездну, можно неплохо провести время.

Ссылка на комментарий
Поделиться на другие сайты

[quote name='Shinsaku-To' post='1980665' date='5 February 2008, 22:06'][b]Рыб[/b], всё, уже разобрался, я и составители хелпа не поняли друг друга. Функция возвращает не ноль, если может хоть какой-то кусок в начале перегнать в инт. Я искал функцию, которая всю строку анализирует. Есть ли такая в стандартном наборе?[/quote]
Не знаю, всегда больная тема с этими преобразованиями была. В особо критичных случаях реализовывал своими силами, особенно что касается перевода даты в строку и обратно в независимости от локали.

[quote name='Shinsaku-To' post='1980665' date='5 February 2008, 22:06']ЗЫ Кстати, у меня atoi("-3.6") = -3[/quote]
Ага, опечатка ).
Ссылка на комментарий
Поделиться на другие сайты

[b]Рыб[/b], спасибо, понятно. Ладно, напишу. Пора уже собственные прибамбасы про запас копить, можно и с такого начать =)

Если долго всматриваться в бездну, можно неплохо провести время.

Ссылка на комментарий
Поделиться на другие сайты

[b]Shinsaku-To[/b], попробуйте еще копнуть strtol(), strtoul(), strtod() и подобные. Очень хорошие функции, много лучше семейства atoi(). Правда не знаю, обитают ли они в виндовых библиотеках

смертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмер

тьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсм

ертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмерть

смертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмер

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...
[b]Arion Telvanni[/b], круто берёшь )) Без глубоких познаний в низкоуровневом программировании (или даже машинном коде), взаимодействии с системой, лексическом, синтаксическом анализе и прочих прелестей, имхо, никак. Хотя у самого у меня части таких знаний пока нету, возможно, всё проще, чем кажется.
А зачем тебе такое, если не секрет?

Вот пояндексил немножко и нашёл такое: [url="http://pascal.sources.ru/parsing/compl1.htm" target="_blank" rel="nofollow">http://pascal.sources.ru/parsing/compl1.htm[/url] Изменено пользователем Shinsaku-To (смотреть историю редактирования)

Если долго всматриваться в бездну, можно неплохо провести время.

Ссылка на комментарий
Поделиться на другие сайты

[quote name='Arion Telvanni' post='2009250' date='10 March 2008, 01:07']Небольшой вопрос.. кто-нить знает как писать компилятор? спс(([/quote]Для начала нужно определиться с тем, для какого языка компилятор. Накатать (или каким другим образом найти) документацию на него. Затем пишется фронтенд - странное нечто, которое преобразовывает принятый внутрь текст на данном языке программирования в некую структуру в памяти. В общем случае это граф. Затем этот граф может быть оптимизирован. И вот тут как раз без особенностей машинной архитектуры далеко не уедешь. Потом пишется бэкэнд - не менее странное нечто, перегоняющее полученную структуру в ассемблер для выбранной машины. Затем полученный ассемблерный код прогоняется через собственно ассемблер и получается (может быть) исполняемый (и исполнимый) файл.

На самом деле это не так уж и сложно, если не заниматься оптимизацией и не пытаться сразу реализовать кучу фич. Где-то на свежем мясе видел C-компилятор, написанный одним человеком. Он, конечно же, не полностью соответствует стандарту.

Вообще же при разработке языка сначала пишется транслятор, а не компилятор.

[b]UPD[/b] И парочка мизерных C-компиляторов, для указания пути истинного
TCC - [url="http://fabrice.bellard.free.fr/tcc/" target="_blank" rel="nofollow">http://fabrice.bellard.free.fr/tcc/[/url]
NWCC - [url="http://nwcc.sourceforge.net/download.html" target="_blank" rel="nofollow">http://nwcc.sourceforge.net/download.html[/url] Изменено пользователем Le_0 (смотреть историю редактирования)

смертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмер

тьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсм

ертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмерть

смертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмер

Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...
Помогите нупке в Паскале: мне нужно, чтобы в текстовом режиме можно было подцепить обьект мышью и таскать его по экрану.
В паскале я стремлюсь к нулю, посему нашёл статью, в статье мышь расписана только для модуля Graph.

Собсно я в панике. Подскажите плз статью, где можно почитать об использовании мыши в текстовом режиме. Или, если не лень подскажите, как оно делается.

Some folks inherit star spangled eyes

Ooh, they send you down to war, Lord

And when you ask them, "How much should we give?"

Ooh, they only answer More! more! more! y'all

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...

Важная информация