| BG Development · За реклама · За контакти |
Помощ Търсене Потребители Календар Правила |
| Здравей! ( Включване | Регистриране ) |
![]() ![]() ![]() |
| Gnus |
Публикувано на: 27-10-2008, 09:50
|
||||||
|
Име: Георги Койчев Група: Потребител Ранг: Старо куче Мнения: 683 Регистриран на: 13.03.06 |
Сутринта гледахме с жена ми една програмка която тя щеше дава на учениците. Те учат С++ и им се дават разни примерчета със сложността на Hello, World. По незнайна причина не щеше да й се компилира, не познаваше cout и др. такива. Аз оправих нещата, като сложих едно
Обаче трябваше да измисля начин да стане без да се ползва този ред, защото не го били учили. Оказа се, че при преписването тя е написала
вместо
и нещата се оправиха.
Аз пиша на С и особеностите на С++ ги знам повече от книжките, отколкото от практиката и не можах да си обясня, каква е разликата в инклудването на хедъра по двата начина и защо в единия случай трябва да се дава неймспейса, а в другия не? -------------------- Парите не ме вълнуват. Успокояват ме.
|
||||||
| donangel |
Публикувано на: 27-10-2008, 09:53
|
![]() Име: Дончо Ангелов Група: VIP Ранг: Почетен член Мнения: 1757 Регистриран на: 12.11.04 |
По-добре да не си казвам какво ми е мнението за преподавател, който сам не може да си оправи програмката с трудността, която описваш. Ще е много лично и против правилата на форумът..
Неймспейсът винаги трябва да се дава, когато работиш със STL. -------------------- |
| Stenli |
Публикувано на: 27-10-2008, 10:09
|
|
Име: Красимир Група: Потребител Ранг: Посетител Мнения: 64 Регистриран на: 07.08.06 |
Разликата е, че по-старите компилатори не разпознават <iostrem> и трябва да се напише както в C <iostream.h>. При новите хедъри без "h" не се определят имена на файлове, а имена на идентификатори, които компилаторът може да свърже с файлове. Това мисля е най-общо за новите и старите header-и
едит: за да използваш новия стил хедъри трябва задължително да включиш и namespaces, защо е така е обяснено перфектно от Izida Това мнение е било редактирано от Stenli на 27-10-2008, 10:24 |
| jean_lesn |
Публикувано на: 27-10-2008, 10:12
|
||
![]() Име: Ян Лесневски Група: Потребител Ранг: Почетен член Мнения: 972 Регистриран на: 26.05.04 |
Децата трябва да си го научат по правилния начин. #include <iostream.h> е остарял метод, смятан за deprecated. Вижте какво конско ми чете GCC (g++) при опит да ползвам този хедър:
|
||
| Izida |
Публикувано на: 27-10-2008, 10:15
|
||
![]() Име: Ирина Марудина Група: Администратор Ранг: Почетен член Мнения: 1248 Регистриран на: 27.07.04 |
Основната разлика си остава това, че в "старите хедъри" (включени с .h) всички класове, функции и т.н. са дефинирани в глобалното пространство. Това е от времето преди въвеждането на пространствата от имена (namespaces). След въвеждането им вече всички класове на стандартните библиотеки са дефинирани вътре в именованото пространство std. Така че ако включиш новия хедър (без .h) трябва или пред всеки клас да слагаш "std::", или да укажеш на компилатора да търси в именованото пространство std чрез "using namespace std;". P.S. Примерен iostream.h от GCC :
Вижда се, че прави именно това - да включи дадени обекти и класове в глобалното пространство като посочи в кои пространства участват. Това мнение е било редактирано от Izida на 27-10-2008, 10:16 -------------------- Simplicity is harder than complexity.
Аbstractions save us time working, but they don't save us time learning. [Joel Spolsky] Simplicity - the art of maximizing the amount of work not done. |
||
| ljubo |
Публикувано на: 27-10-2008, 13:43
|
![]() Име: Любомир Янчев Група: Потребител Ранг: Старо куче Мнения: 686 Регистриран на: 03.09.07 |
Безпорно .h е стар метод - със старите библиотеки...
using namespace std; ти вкл 1 добавка, която предотвратява писането на std:: преди някои частни оператори от iostream... например ако не напишеш using namespace std; и напишеш cout<<"blqh"; ще ти даде грешка, която можеш да поправиш с std::cout<<"blqh"; ОК? В кое даскало преподава жена ти |
| nikolavp |
Публикувано на: 27-10-2008, 15:57
|
|
Име: Никола Петров Група: Потребител Ранг: Активен Мнения: 264 Регистриран на: 15.12.07 |
Искрено се надявам тази тема да е шега.
-------------------- |
![]() |
![]() ![]() ![]() |