PDA

Tam Sürümünü Görmek İçin : using namespace std;


-aga-
04/12/2007, 15:57
std dedinizde,benim bir sorum olacak.
using namespace std;
ne işe yarıyor, anlayamadım.
Bu komutu silince program çalışmıyor.


KamilORS
04/12/2007, 17:27
using namespace std;

silersen yukarda @acehreli dediği gibi

std::cout<<"blabla";
std::cin>>blabala;

şeklinde kullanman gerek fonksiyonları...
isim uzayı denir genellikle. google da araştırırsan ayrıntılı bilgi bulabilirsin.

selim-
08/12/2007, 16:06
using std::cout;
using std::cin;

seklinde herseyi yazmalisin. ben topunu kullanicam manasina gelir using namespace std ve bir satirda halledersin.

hgedek
09/12/2007, 19:13
çoğunlukla using namespace std; kullanırız.Ama eğer büyük bir proje yapıyor ve performans ihtiyacı varsa std:: kullanın ki gereksiz kütüphaneleri dahil etmeyin.

myavuzselim
09/12/2007, 20:14
çoğunlukla using namespace std; kullanırız.Ama eğer büyük bir proje yapıyor ve performans ihtiyacı varsa std:: kullanın ki gereksiz kütüphaneleri dahil etmeyin.
Performansla ilgisi oldugunu sanmiyorum. Namespace'larin isi sadece isim cakismasini engellemek bildigim kadariyla.

quasimodo
09/12/2007, 21:26
C deki global isim alani kirliliginden kurtulmak icin C++ ta namespace
kavrami ortaya cikmistir. C++ in tum standart kutuphane bilesenleri
std isim uzayinda tanimlanmistir (bildirilmistir).
Bir isim uzayi elemanina erismek icin, eleman isim uzayinin adi ve
kapsam cozunurluk operatoru ile nitelendirilmelidir.
Orn :
std::cin;
std::cout;
std::strcpy();
Bu sekilde nitelemeyi her defasinda yazmak birhayli zahmetli
oldugundan using veya using namespace bildirimleri kullanilir.

using std::cin;
using std::cout;
ile
using namespace std;
arasinda cok buyuk fark vardir.

using bildirimi ile bildirilen isim, bildirimin yapildigi bilinirlik alanina
eklenir.

namespace M
{
int a, b, c;
}

int main()
{
using M::a; /* Bu bildirimden sonra a artik main()
blogu icinde tanimlanmis gibi ele alinir */

int a; /* Bu yuzden bu sekilde tanimlama derleme hatasi olarak
ele alinir. Cunku C++ ta bir bilinirlik alaninda ayni isimli
iki degisken tanimlanamaz. */

// Tam terside boyledir ...
int c;
using M::c; // Hata : redeclaration of int 'c'

}

using namespace komutu ise, isim uzayi elemanlarinin, sanki bu
elemanlar isim uzayinin taniminin bulundugu yerde, ancak isim
alaninin disinda tanimlanmis gibi gozukmesini saglar. Yani

namespace M
{
int a, b, c;
}

int main()
{
using namespace M;

a = 10; // M::a;

int c; // tanimlama tamamen gecerli
c = 5; // atama yapilan c yerel c;

M::c = 8; // isim uzayi icindeki c;
}

-aga-
10/12/2007, 08:56
Anladım, std kütüphane fonksiyonlarını programa dahil etmek için kullanılıyor
peki

namespace M
{
int a, b, c;
}

}
kodunda kullandığımız namespace anladığım kadarıyla grup oluşturuyor.
Bu basic teki "type" nin karşılığımı?:utangac:

acehreli
10/12/2007, 10:21
-aga-, daha once soylendigi gibi yalnizca bazi "adlarin" kolayca kullanilmasini sagliyor. Yani derleyiciye soyle diyoruz: "lutfen beni ugrastirma, her seferinde std::cout yazmak zorunda kalmayayim; ben cout yazinca sen daha once 'using' dedigim isim alanlarini tara ve orada buldugun cout'u kullan iste."

Programa fonksiyon eklemekle ilgisi yok. "Leb" demeden leblebiyi anlamak gibi:

namespace Leb
{
int lebi;
}

using namespace Leb;

lebi = 42; // Burada derleyici Leb::lebi anliyor :D

Ali

-aga-
10/12/2007, 11:48
Anladım.Sağolun...:ginginn:

quasimodo
10/12/2007, 14:25
Programa fonksiyon eklemekle ilgisi yok. "Leb" demeden leblebiyi anlamak gibi:

namespace Leb
{
int lebi;
}

using namespace Leb;

lebi = 42; // Burada derleyici Leb::lebi anliyor :D

Ali

Superdi .... :D

tujix
10/12/2007, 16:11
al benden de okadar yaw :D leb::lebi:cool: