Mi a különbség az #include és az using namespace közt?
Az #include egy prepocesszor művelet, copy-paste-el egy header fájlt.
A using a linkernek mondja meg, hogy milyen névterekben keresse az explicit névtérdefiníció nélküli függvényeket.
Ha includeolsz valamit, akkor a header file bemásolódik a abba a fileba. Mivel ebben definíciók vannak, így tudod használni a benne lévő elemeket.
Using kulcsszó nélkül is működik midnen, ami az iostreamben található. Feltételezem a cout-tal van gondod. Mivel ez az std névtérben van, ezért using nélkül csak úgy tudsz rá hivatkozni, hogy std::cout << "szoveg" << std::endl; Ha using-ot használod az std-re, akkor ezt elkerülheted, így elég a cout, stb. De javaslom, hogy inkább írd ki mindenhova az std::-ot, mint hogy usingolj egy hatalmas névteret, amiből alig kell neked valami.
Az #include egy preprocesszor, ami semmi mást nem csinál, mint copy-paste bemásolja a megadott kódrészletet a forrásba. Pl #include <iostream> bemásolja az iostream alá tartozó kódállományt. Utána ha pl ki akarok valamit írni a konzolba, akkor már használhatom pl, hogy
std::cout<<"Hello World"<<std::endl;
Felhívnám a figyelmed az std:: részre. Ezzel jelölöm , hogy az std névtérben található amit használni akarok. Ha nem teszem ki, hogy std::, akkor fordító a lokális névtérben fogja keresni amit akarok. De a cout nem ott van, hanem az std-ben. Úgyhogy kapom a hibát fordításkor.
De mi van, ha én nem akarom a névtereket irogatni minden elé, mi van, ha én csak annyit akarok írni, hogy:
cout<<"Hello World"<<endl;
Na ekkor hasnálhatjuk a using namespace direktívát, ha megadom, hogy using namespace std, azzal az std névteret is hozzáadom az aktuális scope-hoz, így az std:: névtérjelölés nélkül is használhatom azt, ami az std-ben van.
Ez a különbség, az #include kódszinten elérhetővé tesz egy állományt, míg a using namespace segítségével pedig egy kódrészlet scope-jához tudunk hozzáadni egy névteret, elhagyhatóvá téve az explicit névtérmegjelölést.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!