Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Путеводитель по C++: выпуск номер раз 
:(
    Опции темы
chipset
Дата 12.2.2006, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Итак, вы решили изучать C++? Замечательно. Прекрасно. <вырезано цензурой>!
А что вы ожидали увидеть тут? То, с чего начинает половина книжек по C++ -- описание типов переменных на пять листов (за символы плотют однако-ж)? Нет, пожалуй, я воздержусь.
Спешу вас обрадовогорчить, пишу я не книгу. Их и так уже, пруд пруди. К тому-же, лучше чем у Страуструпа ни у кого не получалось smile

А, о чём это, я? Да всё о том же, я буду публиковать в этом и ещё аж N статейном цикле статеек ответы на вопросы которые будоражили меня на заре моего изучения C++ а сейчас, судя по списку топиков этого топика будоражат ещё как минимум 30% новичков, приходящих в этот язык со стороны, будь то PHP, Delphi или ещё какой-нибудь ЛИСП. Считайте эту статью, каталогом, обозревателем в мире C++ulture (как выразился небезызвестный Зверёк Харьковский в одноименной статье).

Начну я пожалуй с инструментов.

Скажите пожалуйста, а что лучше: Microsoft Visual Borland C++ 5.5 или STL?

Ахтунг! C++ -- это язык (падлавил!).
C++ -- не программа, не IDE, ничего такого что можно было-бы "скачать и запустить".
Говоря строго, C++ это язык который представлен небольшим документом описывающим основные конструкции языка C++ а так-же стандартную библиотеку C++ (о ней пожже). Название документу сему Стандарт. Брать его стоит где-нибудь здесь.

С++ это набор правил по которым компилятор преобразовывает C++ код в машиные коды. Ладно, ладно, не сразу в машинный код. Сначало в кучу промежуточных файлов, а только их уже линковщик линкует между собой (функция в A.obj а вызов в B.obj, ужоснах).

Обычно, эта связка компилятор+линковщик, поставляеться вместе. Кстати, вышеупомянутая спецификация языка соблюдаеться абсолютно верно только в одном компиляторе (Comeau). Поэтому, много тем на форумах по C++ (в т.ч. и на Винграде) возникают из-за неправильной реализации C++ (читай: не соответсвующей стандарту). Что я имею в виду под этими замысловатыми высказываниями, это то что на разных компиляторах простейший код может интепретрироваться по-разному.
Обычно, это выглядит в стиле "Именем Святага Стандарта я говорю что класс А не может обьявляться наследником класса B". В этом месте разработчики MS скромно тупят глаза и просят о условном сроке.

Создатели компиляторов -- не роботы к сож., а некоторые ещё (как MS) хотят и свои фичи привнести в язык, плюя на стандарт (у MS много опыта в этой области). Есть и просто глючная реализация. Особенно, подобной реализацией славиться Borland C++ (не путать с C++ Builder!). Поэтому, если он у вас ещё есть -- выкиньте его пожалуйста в большущую ТОПКУ. Спасибо!

Вот небольшой список ведущих на данный момент компиляторов, к примеру:
- GCC (на Windows его перевели -- MinGW зовёться)
- Microsoft Visual C++ 2003 (бесплатный)
- OpenWatcom
- Comeau -- не знаю кем используеться правда, но стандарту соответствует как никто другой.
- Borland C++ Builder (к огромному сожалению).

Это -- компиляторы. Это не язык, это -- просто программка которая сжовывает ваши гениальные C++ программки и преобразовывает их в машинные коды. Консольная, должен заметить, программка. Та гламурная вещь которую вы запускаете гордым дабл-кликом по Microsoft Visual Studio это IDE. В сущности, расширенный текстовой редактор и файл-менеджер, с возможностью запуска компилятора. Компилятор, как я уже сказал -- консольная программа.

Естественно, что в современных IDE... Ах, я забыл сказать что IDE расшифровываеться как Integrated Development Environment -- интегрированная среда разработки. ... реализовываеться гораздо больше чем может показаться на первый взгляд...

То заблуждение что Visual Studio это компилятор, обычно формируеться тем что идут эти две разные сущности (VC++ и VS) вместе. Вот небольшой списочек современных IDE и компиляторов с которыми они могут работать:

-- Microsoft Visual Studio: только MSVC++.
-- Eclipse: любой бесплатный компилятор.
-- Code::Blocks: любой бесплатный компилятор.
-- DevC++: насколько я помню, только MinGW.
-- Borland C++ Builder: Borland C++.

Т.е., то что вы должны освоить из этой статьи так это то что C++ код можно пистаь и в notepad.exe, и в VI, и даже в FAR (плагин даже есть такой). Компилировать его однако, можно, только компиляторами (ну не западлоль?).
----
Фух.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Aveic
Дата 15.2.2006, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.2.2006
Где: Да все мы из одно й ямы

Репутация: нет
Всего: нет



Цитата(chipset @ 12.2.2006, 07:57 Найти цитируемый пост)
Фух.
И не говори, такого наговорил. Бедные парни так и не поймут, можно ли вообще на С++ программы писать или нет, а некоторые начнут компилить код в NotePad. Лана, это я так

PM MAIL ICQ   Вверх
Ignat
Дата 16.2.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



Цитата(chipset @ 12.2.2006, 07:57 Найти цитируемый пост)
Есть и просто глючная реализация. Особенно, подобной реализацией славиться Borland C++

Примеры в студию....


--------------------
Теперь при чем :P
PM   Вверх
Mayk
Дата 16.2.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Ignat @ 16.2.2006, 22:02 Найти цитируемый пост)

Примеры в студию....

Почему bc должен лететь ф топку? Пжалуйста.
Сегодня бился с тремя траблами.


Код

int a[10]={};

Цитата(bcc32 bug1.cpp)

Borland C++ 5.5.1 for Win32 Copyright © 1993, 2000 Borland
bug1.cpp:                                                 
Error E2264 bug1.cpp 1: Expression expected               
*** 1 errors in Compile ***                               

Жуть. Лечится конечно просто, но всё равно не приятно.

Ещё вот так нельзя в нём делать вообще:
Код

int cmd_help(){}
int main()
{
        struct {
                char* command;
                int (&funcRef)();
                char* commandHelp;
        }funcs[] = {
                {"help", cmd_help, "display this help msg"}
        };

}

(тут кстати даже комо даёт ворнинг, но компилит. гнус глотает за просто так)
Цитата(bcc32 bug2.cpp)

bug2.cpp:
Error E2232 bug2.cpp 10: Reference member ' ::funcRef' in class without constructors in function main()
*** 1 errors in Compile ***                                                                                                                                   


BC вообще оказывается не ровно дышит к структурам.
Код

class Point2D{};
struct Line2D{
    Line2D(const Point2D& a, const Point2D&b){}
};

int main()
{
     Point2D a,b,c;
     struct {
        Line2D line;
        Point2D checkPoint;
     }intersectionTest[]=
     {
        {Line2D(a,b),c},
        {Line2D(a,c),b},
        {Line2D(b,c),a}
     };
}

(гнус и комо не подавились)
Цитата(bcc32 bug3.cpp)

Borland C++ 5.5.1 for Win32 Copyright © 1993, 2000 Borland                 
bug3.cpp:                                                                     
Error E2034 bug3.cpp 14: Cannot convert 'Line2D' to 'struct' in function main()
Error E2291 bug3.cpp 14: } expected in function main()                       
Error E2141 bug3.cpp 14: Declaration syntax error in function main()         
Error E2139 bug3.cpp 14: Declaration missing ; in function main()             
Error E2190 bug3.cpp 14: Unexpected }                                         
Error E2040 bug3.cpp 14: Declaration terminated incorrectly                   
Error E2190 bug3.cpp 17: Unexpected }                                         
Error E2190 bug3.cpp 17: Unexpected }                                         
Error E2190 bug3.cpp 19: Unexpected }                                         

9 ошибок. Мне пришлось давать структуре имя и делать ей конструктор smile

Это сообщение отредактировал(а) Mayk - 16.2.2006, 18:47


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0648 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.