Miért van az, hogy egyes C++ fordítókkal ha std::stringet használok, nem kell includeolni a string header fájlt?
Néhány fordítónál nem szükséges, mivel maguktól tudják kezelni, de ettől függetlenül szükséges lehet, hiszen ha pl. egy másik programozónak adod a kódot, és ő olyan fordítót használ, aminél include-olni kell a string-et, akkor nála nem fog rendesen futni a program (tehát neki kell include-olni a string állományt).
"Viszont ne felejtsük el includeolni a string header fájlt:
#include <string>
Noha előfordulhat, hogy bizonyos fordítókat használva ennek hiánya nélkül is ugyanúgy tudunk std::stringet használni, mégis érdemes szerepelnie ennek a preprocesszor direktívának azon forrásfájlok elején, amikben std::stringet használunk."
Azért ez a "maguktól tudják kezelni", ez egy kissé túlzás. Olyan fordítót még nem láttam (se gcc, se clang, se MSVC), ahol mindenféle include nélkül lehetne használni az std::string típust.
A magyarázat inkább abban rejlik, hogy ha behúzol egy másik header fájlt (pl <iostream> ), akkor lehetséges, hogy azokon belül include-olva van maga a <string> header, és így külön már nem szükséges neked include-olni. Természetesen ha egy másik platformon fordítasz, vagy az STL-nek egy másik implementációját használod, akkor ott ez nem garantált, hogy működni fog.
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!