Nima uchun men STX sarlavhalarini gcc 4.6 ga qo'shishim kerak emas?

C ++ 0x rejimida gcc 4.6 dan foydalanmoqdaman. Men vektor va boshqa STL konteynerlaridan foydalansam, lekin ular bilan bog'langan sarlavha fayllarini kiritmasam, men hech qanday kompilyator xatosini olmaganimni payqadim. Ushbu dizayn bo'yichami? Afsuski, nima qilish kerak?

Men doimo std nomini aniq ko'rsatishni istayman ... lekin men doim nombo'ylashi aniqlangan bo'lsa ham, sarlavha kiritilishi kerak, deb o'yladim.

Bu sarlavhani qo'shishni afzal ko'rsatsa, bu g'alati bir ko'rsatuv kabi ko'rinadi, chunki men derazadan yordamisiz soatning 100% ni to'g'ri deb bilaman.

2
Oh to'g'ri, lekin kodni yaxshi saqlab turish afzal ko'rgan narsa nima? STL sarlavhalarini boshqa sarlavhalar (masalan, ichki vazifalar va boshqalar) bilan to'ldirish har doim ham mumkin emas,
qo'shib qo'ydi muallif daj, manba
Dasturingiz o'z ichiga olgan sarlavhalarni tekshiring, STL sarlavhalari ushbu sarlavhalardan biriga kiritilishi kerak.
qo'shib qo'ydi muallif Alok Save, manba
Ehtimol, ularni bilvosita, boshqa nomlar orqali kiritishingiz mumkin.
qo'shib qo'ydi muallif Alexandre C., manba

2 javoblar

Sizga kodingizni talab qiladigan barcha standart sarlavhalarni har doim qo'shishingiz kerak.

Afsuski, standart nomlar boshqa standart satrlarni qo'shishga ruxsat beriladi, bu holatda siz o'zingizni to'g'ri sarlavhani o'z ichiga olmay turib foydalanishingiz mumkin. Siz bunga tayanolmaysiz va siz boshqa kutubxona dasturini o'zgartirsangiz o'zingizning tarkibingizni tuzatishingiz kerakligini topasiz.

Sizda doimo o'zingizning to'g'ri fikringizni qabul qilishingizni ta'minlashning oddiy usuli yo'q; eng oson variant sizning kodingiz siz qiziqadigan barcha kutubxona dasturlari bilan kompilyatsiya qilinishini sinab ko'rishdir.

3
qo'shib qo'ydi

GCC ga berilgan -H variantini (ya'ni sizning holingizda g ++ ) GCC har bir sarlavhani o'z ichiga oladi. Sizga faylning qanday kiritilganligini bilishingiz mumkin (ya'ni boshqa nomdan). Va GCC, sehrli darajada stdc ++ sarlavhalarini o'z ichiga olgan deb o'ylamayman.

3
qo'shib qo'ydi