C>Как я понял из-за того, что тип строки char*, argsCount — int, происходит применение операции '+' к char* со сдвигом указателя char* на 1 байт, и он начинает указывать на второй символ строки
Все верно. Чтобы исправить ошибку, написать нужно так:
cout << "argsCount : " << argsCount << endl;
--
Re[5]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, Cynic, Вы писали:
C>Здравствуйте, rg45, Вы писали:
C>Осталось чуть-чуть C>1) При попытке запустить программу, вылезает окно с сообщением: "This project is out of date: MyFirstProject — Debug Win32"; C>Если всё равно продолжить, то: C>2) Если return 0 не писать вылетает "error C4716: 'MyFirstProgramm::main' : must return a value"; C>3) Если return 0 написать, то ещё лучше, сразу две ошибки "error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup — MSVCRTD.lib" и "fatal error LNK1120: 1 unresolved externals"; C>4) Я заметил, что есть разница между #include <iostream.h> и #include <iostream>; C>5) Где обычно находятся header files и где в свойствах проекта это указать;
Судя по всему, ты определил функцию main в неймспейсе MyFirstProgramm. Сама по себе идея использовать пространства имен хороша, но функция main — особый случай — она должна находиться только в глобальном пространстве имен.
--
Re[5]: Как запустить консольное приложение в VS 2008 ???
По остальным вопросам:
C>4) Я заметил, что есть разница между #include <iostream.h> и #include <iostream>;
Лучше сразу вырабатывать привычку писать портабельный код. Согласно стандарту заголовок называется именно <iostream>, а не <iostream.h>
C>5) Где обычно находятся header files и где в свойствах проекта это указать;
В принципе, заголовочные файлы не являются компилируемыми единицами и могут располагаться где угодно, нужно только уметь обеспечить, чтобы студия их находила. Но это отдельный вопрос. Для начала помести свои заголовочные файлы в один каталог с cpp-файлами и для комфортной работы подключи их проекту. Подключение заголовков проекту ни на что не влияет, кроме удобства работы. Включай эти заголовки в исходные файлы с использованием кавычек, но не угловых скобок, например:
#include"my_header.h"
Еще один момент. Имеет смысл активно использовать различные расширения для заголовочных файлов — .h и .hpp. При таком подходе сразу понятно, какие заголовки можно подключать только к C++ исходникам, а какие и к C++ и к C.
--
Re[7]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, Cynic, Вы писали:
C>Ещё задалбало сообщение "This project is out of date: MyFirstProject — Debug Win32" в VS Как от него избавится ???
Ну нормальное сообщение Это предупреждение появляется при подаче команды на пуск программы, но при этом с момента последней компиляции сделаны какие-то изменения. Если после каких-либо изменений, прежде, чем давать команду на запуск, ты будешь предварительно ее компилировать, то это сообщение не будет появляться.
--
Re[13]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, Cynic, Вы писали:
C>>Кажется я сам понял в чём дело. Поправьте меня если я ошибаюсь, уже 5ть лет C++ не трогал! Было так: C>>
C>>Как я понял из-за того, что тип строки char*, argsCount — int, происходит применение операции '+' к char* со сдвигом указателя char* на 1 байт, и он начинает указывать на второй символ строки
R>Все верно. Чтобы исправить ошибку, написать нужно так: R>
Здравствуйте, Cynic, Вы писали:
C>Привет народ. Давно, что-то не трогал C++. Вопрос такой как в VS2008 запустить консольное приложение. Что нибудь типа этого: C>
Открываешь студию, потом заходишь через главное меню: File/New/Project... В появившемся диалоговом окне выбираешь тип проекта: Visual C++/Win32/Win32 Console Application. Здесь же указываешь имя проекта и путь на файловой системе. Дальше мастер создает тебе заготовку проекта. После этого заходишь в файл StdAfx.h и выкидываешь оттуда все, что нагенерил мастер. Вместо этого пишешь:
#pragma once
#include <iostream>
//и другие заголовки добавляешь сюда по мере надобности.
Затем заходишь в главный файл проекта, опять же выкидываешь все, что нагенерил мастер и пишешь вместо этого:
#include"StdAfx.h"int main()
{
std::cout << "Hello, World !!!" << std::endl;
//return 0 согласно стандарту в этом месте писать не обязательно.
}
И все. Компиляция и запуск.
--
Re[2]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, rg45, Вы писали:
R>Открываешь студию, потом заходишь через главное меню: File/New/Project... В появившемся диалоговом окне выбираешь тип проекта: Visual C++/Win32/Win32 Console Application. Здесь же указываешь имя проекта и путь на файловой системе. Дальше мастер создает тебе заготовку проекта. После этого заходишь в файл StdAfx.h и выкидываешь оттуда все, что нагенерил мастер. Вместо этого пишешь: R>
R>#pragma once
R>#include <iostream>
R>//и другие заголовки добавляешь сюда по мере надобности.
R>
R>Затем заходишь в главный файл проекта, опять же выкидываешь все, что нагенерил мастер и пишешь вместо этого: R>
R>#include"StdAfx.h"
R>int main()
R>{
R> std::cout << "Hello, World !!!" << std::endl;
R> //return 0 согласно стандарту в этом месте писать не обязательно.
R>}
R>
R>И все. Компиляция и запуск.
А если создал EmptyProject ?
:)
Re[3]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, Cynic, Вы писали:
C>А если создал EmptyProject ?
Тоже можно, но немного больше действий прийдется сделать. Нужно открыть диалоговое окно свойств проекта () и сделать следующие настройки: General: Configuration Type = Application (.exe)
Linker/System: Subsystem = Console
C/C++/Precompiled Headers: Create/Use Precompiled Header = Not using precompiled headers
После чего добавляешь к проекту новый файл, обзываешь его, например, main.cpp:
#include <iostream>
int main()
{
std::cout << "Hello, World !!!" << std::endl;
//return 0 согласно стандарту в этом месте писать не обязательно.
}
Все. Компиляция, запуск.
Рекомендации по созданию проекта в обоих случаях я давал исключительно исходя из принципа минимума действий. Поэтому в первом и во втором случаях проекты получились несколько разных конфигураций: в первом случае использовались предкомпилируемые заголовки, а во втором нет. В этих тонкостях уже тебе прийдется разбираться.
--
Re[4]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, Cynic, Вы писали:
C>>А если создал EmptyProject ?
R>Тоже можно, но немного больше действий прийдется сделать. Нужно открыть диалоговое окно свойств проекта () и сделать следующие настройки: R> R>General: Configuration Type = Application (.exe) R>Linker/System: Subsystem = Console R>C/C++/Precompiled Headers: Create/Use Precompiled Header = Not using precompiled headers R>R>После чего добавляешь к проекту новый файл, обзываешь его, например, main.cpp: R>Все. Компиляция, запуск.
Осталось чуть-чуть
1) При попытке запустить программу, вылезает окно с сообщением: "This project is out of date: MyFirstProject — Debug Win32";
Если всё равно продолжить, то:
2) Если return 0 не писать вылетает "error C4716: 'MyFirstProgramm::main' : must return a value";
3) Если return 0 написать, то ещё лучше, сразу две ошибки "error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup — MSVCRTD.lib" и "fatal error LNK1120: 1 unresolved externals";
4) Я заметил, что есть разница между #include <iostream.h> и #include <iostream>;
5) Где обычно находятся header files и где в свойствах проекта это указать;
Первый раз самый трудный
:)
Re[5]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, Cynic, Вы писали:
C>Осталось чуть-чуть C>1) При попытке запустить программу, вылезает окно с сообщением: "This project is out of date: MyFirstProject — Debug Win32"; C>Если всё равно продолжить, то: C>2) Если return 0 не писать вылетает "error C4716: 'MyFirstProgramm::main' : must return a value"; C>3) Если return 0 написать, то ещё лучше, сразу две ошибки "error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup — MSVCRTD.lib" и "fatal error LNK1120: 1 unresolved externals"; C>4) Я заметил, что есть разница между #include <iostream.h> и #include <iostream>; C>5) Где обычно находятся header files и где в свойствах проекта это указать;
C>Первый раз самый трудный
Сорри. Часть вопросов отвалилась. Я main в namespace засунул.
1) При попытке запустить программу, вылезает окно с сообщением: "This project is out of date: MyFirstProject — Debug Win32";
Если всё равно продолжить, то:
2) Я заметил, что есть разница между #include <iostream.h> и #include <iostream>;
3) Где обычно находятся header files и где в свойствах проекта это указать;
4) Почему если засунуть main в namespace вылетает ошибка;
:)
Re[6]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, Cynic, Вы писали:
C>>Ещё задалбало сообщение "This project is out of date: MyFirstProject — Debug Win32" в VS Как от него избавится ???
R>Ну нормальное сообщение Это предупреждение появляется при подаче команды на пуск программы, но при этом с момента последней компиляции сделаны какие-то изменения. Если после каких-либо изменений, прежде, чем давать команду на запуск, ты будешь предварительно ее компилировать, то это сообщение не будет появляться.
А еще обрати внимание^ в диалоговом окне, содержащем это предупреждение есть флажок: "Do not show this dialog again"
--
Re[9]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, rg45, Вы писали:
R>А еще обрати внимание^ в диалоговом окне, содержащем это предупреждение есть флажок: "Do not show this dialog again"
Да я уже так сделал, просто интересно было, что оно от меня хотело. Тут ещё парочка вопросов прилипла.
1) Как избавиться от необходимости писать std:: ? В C# для этих целей был using!
2) Почему cout << "text" << endl; съедает первый символ при выводе. Что-то там было про cout, но найти не могу
:)
Re[10]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, Cynic, Вы писали:
C>1) Как избавиться от необходимости писать std:: ? В C# для этих целей был using!
В С++ тоже есть:
using namespace std; //using - директиваusing std::string; //using - объявление
Только в отличие от C# использовать эти директивы можно не только на уровне пространств имен, но и внутри функций. И пользоваться этими средствами надо очень аккуратно. Вынесение директивы using в общий заголовок может привести к большим неприятностям. Но эти вопросы уже в двух словах не охватить. Лучше почитать хорошую книжку.
C>2) Почему cout << "text" << endl; съедает первый символ при выводе. Что-то там было про cout, но найти не могу
Вот это совершенно нетипичное поведение, даже не могу предположить, что это такое :zx:
--
Re[10]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, Cynic, Вы писали:
C>2) Почему cout << "text" << endl; съедает первый символ при выводе. Что-то там было про cout, но найти не могу
Проверь на всякий случай, нет ли у тебя в текстовом литерале символа обратной косой ('\') перед символом 't'. Комбинация "\t" трактуется как escape-последовательность и заменяется на табуляцию. Поэтому если написать так: "\text", то как раз первый символ и будет "съеден".
--
Re[11]: Как запустить консольное приложение в VS 2008 ???
Здравствуйте, rg45, Вы писали:
C>>2) Почему cout << "text" << endl; съедает первый символ при выводе. Что-то там было про cout, но найти не могу R>Вот это совершенно нетипичное поведение, даже не могу предположить, что это такое :zx:
Кажется я сам понял в чём дело. Поправьте меня если я ошибаюсь, уже 5ть лет C++ не трогал! Было так:
Как я понял из-за того, что тип строки char*, argsCount — int, происходит применение операции '+' к char* со сдвигом указателя char* на 1 байт, и он начинает указывать на второй символ строки