Рыб Опубликовано 21 января, 2008 Жалоба Поделиться Опубликовано 21 января, 2008 (изменено) Варианта два: 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;'. Изменено 21 января, 2008 пользователем Рыб (смотреть историю редактирования) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Nicholas D. Wolfwood Опубликовано 21 января, 2008 Жалоба Поделиться Опубликовано 21 января, 2008 (изменено) *_* Как быстр... Слушай прекланяюсь перед ствоим гением... Спасибо огромнейшее... хотя прога не сработала даже с твоими советами... но главное компилируется... Прости еще один вопрос ты не знаешь литератру, которую я могу почитать, а то судя по той что я скачал -___- пример не работает. Нужна литература по 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> Изменено 21 января, 2008 пользователем Nicholas D. Wolfwood (смотреть историю редактирования) Цитата [ACROSS][Кантри ритм] teamПовторяйте за мной... НАША ЗЕМЛЯ СОЗДАНА ИЗ ЛЮБВИ И МИРА ,V.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рыб Опубликовано 21 января, 2008 Жалоба Поделиться Опубликовано 21 января, 2008 (изменено) Какая сейчас есть обучающая литература по С++ не знаю, я очень давно с этим языком знакомился. В качестве "библии" в любом случае надо иметь - Бьерн Страуструп, "Язык С++", издание какое-нибудь из последних - но это скорее как справочник, а не как учебник. Посмотри в магазинах учебники именно по С++, без привязки к какой-то определённой среде разработки. Если возникают сложности именно со Студией, то можно и по этой теме отдельную книжку купить, но как правило среду и без книжек постепенно осваиваешь по статьям из инета, по советам с форумов, там в общем то нет ничего сложного и даже методом "тык+хелп" можно освоить. Вот тут - [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'. Изменено 21 января, 2008 пользователем Рыб (смотреть историю редактирования) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Nicholas D. Wolfwood Опубликовано 21 января, 2008 Жалоба Поделиться Опубликовано 21 января, 2008 Спасибо за совет... во только понять не могу одно.. Вот деректива #Include вводит содержимое файла, что записано в треуголных скобках. Почему iostream пишеться без h, а выше обозначеный conio с h ведь поидее это два файла и они должны одинаково вскрываться что то типа того. Заранее благодарю Цитата [ACROSS][Кантри ритм] teamПовторяйте за мной... НАША ЗЕМЛЯ СОЗДАНА ИЗ ЛЮБВИ И МИРА ,V.. Ссылка на комментарий Поделиться на другие сайты Поделиться
--==SS==-- Опубликовано 22 января, 2008 Жалоба Поделиться Опубликовано 22 января, 2008 [b]Nicholas D. Wolfwood[/b], Для компилятора расширение файла не имеет ровным счётом никакого значения. Так сложилось исторически. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Nicholas D. Wolfwood Опубликовано 22 января, 2008 Жалоба Поделиться Опубликовано 22 января, 2008 (изменено) Странна, что же тогда такое iostream которому не нужно расширение и которое должно поидее быть файлом но им не является... почему в учебниках по С++ iosream записывается с расширением h. И еще вопрос имеет ли смысл использовать тип данных int не заботясь о памяти или все же стоит все же пользоваться Short int и long int Изменено 22 января, 2008 пользователем Nicholas D. Wolfwood (смотреть историю редактирования) Цитата [ACROSS][Кантри ритм] teamПовторяйте за мной... НАША ЗЕМЛЯ СОЗДАНА ИЗ ЛЮБВИ И МИРА ,V.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рыб Опубликовано 22 января, 2008 Жалоба Поделиться Опубликовано 22 января, 2008 (изменено) [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] Вопрос непонятен . Изменено 22 января, 2008 пользователем Рыб (смотреть историю редактирования) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Nicholas D. Wolfwood Опубликовано 22 января, 2008 Жалоба Поделиться Опубликовано 22 января, 2008 Эммм ну переменной можно задать тип данных int как я понял имеет 16 разрядов (-32 768 до 32 767 знаков) или 32(-2 147 483 до 2 147 483 647 знаков) и полностью повторяет типы данных short int и long int, Но пишется короче и запутаться сложнее... так можно юзать только тип Int везде или к каждой переменной подходить нужно индивидуально продумывая ее размер. Цитата [ACROSS][Кантри ритм] teamПовторяйте за мной... НАША ЗЕМЛЯ СОЗДАНА ИЗ ЛЮБВИ И МИРА ,V.. Ссылка на комментарий Поделиться на другие сайты Поделиться
niiro dzyaki Опубликовано 22 января, 2008 Жалоба Поделиться Опубликовано 22 января, 2008 (изменено) [b]Nicholas D. Wolfwood[/b], тип int зависит от системы и может иметь разный размер (int равен машинному слову). short int имеет 16 разрядов, long int 32 разряда, использовать short особого смысла обычно не имеет, ибо по умолчанию большинство компиляторов ради скорости выделяют под переменную машинное слово (32 бита для x86 и 64 для x86_64). Изменено 22 января, 2008 пользователем niiro dzyaki (смотреть историю редактирования) Цитата [ Last Exile ] [ Моран жив! ] [ Fallout ] [ Админы ] [ Дядьки ] Teams [奇跡を信じて団 ] Ссылка на комментарий Поделиться на другие сайты Поделиться
Nicholas D. Wolfwood Опубликовано 22 января, 2008 Жалоба Поделиться Опубликовано 22 января, 2008 Вопрос существует оператор приведения к типу 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.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рыб Опубликовано 22 января, 2008 Жалоба Поделиться Опубликовано 22 января, 2008 (изменено) Приведение типов достаточно широко применяется. Например приведение указателя на базовый класс к указателю на производный и обратно. Операции с void*. P.S.: столкнёшься на практике, станет очевидно. Изменено 22 января, 2008 пользователем Рыб (смотреть историю редактирования) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
--==SS==-- Опубликовано 22 января, 2008 Жалоба Поделиться Опубликовано 22 января, 2008 [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'ы не помню, не юзал. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Shinsaku-To Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 Небольшой вопрос по с++. Очень часто встречающаяся задача - перегон строки в число. При этом требуется проверка, возможен ли такой перегон в принципе. Для проверки на соответствие int мну нарыл функцию atoi(char*), которая, ежели верить хелпам, возвращает 0 когда преобразование в int невозможно. Вставил, попробовал - затыкается на дробных значениях. Например, 3.6 в инт не переделать, но проверку atoi почему-то проходит. Это глюк, или так и должно быть? Цитата Если долго всматриваться в бездну, можно неплохо провести время. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рыб Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 [quote name='Shinsaku-To' post='1980532' date='5 February 2008, 20:23']затыкается на дробных значениях[/quote] atof Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Shinsaku-To Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 Вы не поняли вопроса, но всё равно спасибо. Цитата Если долго всматриваться в бездну, можно неплохо провести время. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рыб Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 (изменено) У меня преобразование при помощи atoi работает как и заявлено в документации. atoi("3.6") = 3 atoi("-3.6") = 3 atoi("zzz") = 0 atoi("3") = 3 Изменено 5 февраля, 2008 пользователем Рыб (смотреть историю редактирования) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Shinsaku-To Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 (изменено) [b]Рыб[/b], всё, уже разобрался, я и составители хелпа не поняли друг друга. Функция возвращает не ноль, если может хоть какой-то кусок в начале перегнать в инт. Я искал функцию, которая всю строку анализирует. Есть ли такая в стандартном наборе? ЗЫ Кстати, у меня atoi("-3.6") = -3 Изменено 5 февраля, 2008 пользователем Shinsaku-To (смотреть историю редактирования) Цитата Если долго всматриваться в бездну, можно неплохо провести время. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рыб Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 [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] Ага, опечатка ). Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Shinsaku-To Опубликовано 5 февраля, 2008 Жалоба Поделиться Опубликовано 5 февраля, 2008 [b]Рыб[/b], спасибо, понятно. Ладно, напишу. Пора уже собственные прибамбасы про запас копить, можно и с такого начать =) Цитата Если долго всматриваться в бездну, можно неплохо провести время. Ссылка на комментарий Поделиться на другие сайты Поделиться
Le_0 Опубликовано 7 февраля, 2008 Жалоба Поделиться Опубликовано 7 февраля, 2008 [b]Shinsaku-To[/b], попробуйте еще копнуть strtol(), strtoul(), strtod() и подобные. Очень хорошие функции, много лучше семейства atoi(). Правда не знаю, обитают ли они в виндовых библиотеках Цитата смертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмер Ссылка на комментарий Поделиться на другие сайты Поделиться
Shinsaku-To Опубликовано 7 февраля, 2008 Жалоба Поделиться Опубликовано 7 февраля, 2008 [b]Le_0[/b], большой спасиб, посмотрю. Цитата Если долго всматриваться в бездну, можно неплохо провести время. Ссылка на комментарий Поделиться на другие сайты Поделиться
Arion Telvanni Опубликовано 9 марта, 2008 Жалоба Поделиться Опубликовано 9 марта, 2008 Небольшой вопрос.. кто-нить знает как писать компилятор? спс(( Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Shinsaku-To Опубликовано 9 марта, 2008 Жалоба Поделиться Опубликовано 9 марта, 2008 (изменено) [b]Arion Telvanni[/b], круто берёшь )) Без глубоких познаний в низкоуровневом программировании (или даже машинном коде), взаимодействии с системой, лексическом, синтаксическом анализе и прочих прелестей, имхо, никак. Хотя у самого у меня части таких знаний пока нету, возможно, всё проще, чем кажется. А зачем тебе такое, если не секрет? Вот пояндексил немножко и нашёл такое: [url="http://pascal.sources.ru/parsing/compl1.htm" target="_blank" rel="nofollow">http://pascal.sources.ru/parsing/compl1.htm[/url] Изменено 9 марта, 2008 пользователем Shinsaku-To (смотреть историю редактирования) Цитата Если долго всматриваться в бездну, можно неплохо провести время. Ссылка на комментарий Поделиться на другие сайты Поделиться
Le_0 Опубликовано 10 марта, 2008 Жалоба Поделиться Опубликовано 10 марта, 2008 (изменено) [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] Изменено 11 марта, 2008 пользователем Le_0 (смотреть историю редактирования) Цитата смертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмертьсмер Ссылка на комментарий Поделиться на другие сайты Поделиться
MuseHunter Опубликовано 20 июля, 2008 Жалоба Поделиться Опубликовано 20 июля, 2008 Помогите нупке в Паскале: мне нужно, чтобы в текстовом режиме можно было подцепить обьект мышью и таскать его по экрану. В паскале я стремлюсь к нулю, посему нашёл статью, в статье мышь расписана только для модуля Graph. Собсно я в панике. Подскажите плз статью, где можно почитать об использовании мыши в текстовом режиме. Или, если не лень подскажите, как оно делается. Цитата Some folks inherit star spangled eyesOoh, they send you down to war, LordAnd when you ask them, "How much should we give?"Ooh, they only answer More! more! more! y'all Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.