[Çözüldü] C++ Derleme Sorunu

Başlatan maydin95, 29 Ağustos 2010 - 13:07:15

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

maydin95

Arkadaşlar Cyber Warriorda bir arkadaş C++ dersleri veriyor. Çağatay Çebinin anlattığı C dosyalarını derledim ama C++ dosyalarını derleyemiyorum.

Arkadaşın verdiği kodlar:
#include<iostream>
#include<conio.h>
using namespace std; // burda kontrol edelim

int main()
{
    int yas;
    string a;
    cout<<"Adiniz Nedir ?"<<endl;
    cin>>a;
    cout<<"Merhaba "+a;
   
    cout<<"\nYasiniz kac ?"<<endl;
    cin>>yas;
   
    cout<<"\nYasiniz:"<<yas;     
   
    getch();
return 0;
}


Ben C derlerken şunu kullanıyorum "gcc -o uygulama dosya.c" olarak kullanıyorum. C++ için şöyle olacakmış: "g++ -o ders ders.cpp". Fakat bunu yaptığımda şu hatayı alıyorum:
maydin@maydin:~/Masaüstü/ders1$ g++ -o ders ders1.cpp
ders1.cpp:2:18: error: conio.h: No such file or directory
ders1.cpp: In function 'int main()':
ders1.cpp:18: error: 'getch' was not declared in this scope
maydin@maydin:~/Masaüstü/ders1$


Ayrıca ben gedit ile kod yazıyorum. NetBeans falan varmış onları kullanmam iyi olur mu? Ne gibi özellikleri var. Ne fayda sağlar.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

sem

#1
conio.h ve getch ikise de Windows için... Standart C kütüphanelerinde yok... O nedenle GCC'de bulunmuyor... Siz gördüğüm kadarı ile uçbirimden derliyorsunuz bu nedenle getch(); fonksiyonuna ihtiyacınız olmaz... Çünkü dikkat ederseniz en sonda kullanmış, Windows'ta bunu kullanmazlarsa neler olduğu göremeden açılan siyah pencere kapanıyor. Bu getch(); sayesinde program kapanmadan önce bir tuş bekliyor klayveden...

conio.h için ise curses ya da ncurses kütüphaneleri kullanılıyordu sanırım fakat emin değilim bu konuda... Yanlış yönlendirmek istemem...

NetBeans de kullanmadım ben doğrudan nano kullanıyorum... O konuda da bir şey diyemeyeceğim... Conio.h için biraz bakınayım bir şey bulursam yani yerine ne kullanıyor bulabilirsem buradan paylaşırım tekrar...

EK:
İngilizcem çok iyi değil fakat ncurses söyleniyor sanırım conio.h yerine;
http://www.daniweb.com/forums/thread275251.html
http://www.programmersheaven.com/mb/Linux/344083/344083/use-conioh/
http://en.wikipedia.org/wiki/Ncurses

Burada da Borland'ın conio.h başlık dosyasını Linux için düzenlemişler sanırım... İndir linki var... Buna da bakın isterseniz...
http://sourceforge.net/projects/linux-conioh/

En son verdiğim bağlantıda getch(); fonksiyonunun conio.h içinde olduğunu görüyorum... Yani bu program conio.h ve getch() bu ikisini de silerseniz (conio.h) sadece getch için kullanılıyorsa tabi ki) bir kaybınız olmaz... Fakat Windows ortamından anlatılan bir kaynak takip ediyorsanız mutkala ilerde de karışınıza çıkacaktır... O nedenle şimdiden çözmek en iyisi sanırım... Kolay gelsin
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

maydin95

Evet arkadaş Windowsta DevC++ programında yapıyor bunları. Şimdi conio.h ve getch kelimelerini silersek olur mu?

Bu arada bir sorum daha var. Ben C öğreniyorum da bazı yerlerde C++ karşıma çıkıyor. İkisi birbirinden ne kadar farklı. Cyi bitirdikten sonra mı C++ okuyayım.

Ayrıca bu uygulamaların artısı ne. Gedit ile yazıyorum komut satırında derliyorum ben. Henüz öğrenme aşamasında olduğum için komut satırını mı kullanayım yoksa bir uygulama ile mi kullanayım C yi.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

sem

Aslında C için konuşayım Gedit ya da Uçbirimde yapmanın bir farkı yok... Alışkanlık alakalı sadece. Ama NetBeans gibi IDE'lere alışınca daha avantajlı gelebilir. Bazı şeyler daha kolay yapılabilir belki... Yani alışkanlık, kolaylık bunlar dışında farkı olmaz, birinde yapamayıp da diğerinde yapabildiğiniz olmaz... Siz nasıl rahat ediyorsanız öyle devam edin derim... Fakat  C için diyorum bunları... C++ bilmiyorum fakat kodlardan gördüğüm kadarı ile isim alanları gibi yapılar mevcut.  Eğerki isim alanı elemanlarını gösteren bir yani tamamlayan bir IDE varsa gedit ya da uçbirime göre çok daha rahat edersiniz... Çünkü milyonlarca fonksiyon, olay ve özellikler mevcut olabiliyor... Bunları tamamlayan bir tane varsa ise eğer habire bu neydi diye açıp bakmak zorunda kalmazsınız...

C ile C++ arasındaki farkları tam olarak bilmiyorum... Bildiğim ikisinin başlık dosyalarını ortak kullanabiliyorsunuz. Mesela siz bir prorgramınıza C 'ye özgü bir başlık (.h)   dosyası iliştirebilirsiniz.

Ayrıca C içersinde isim alanları (namespace), sınıflar gibi yapılar mevcut değil. Yani C nesneye yönelik bir şey sunmuyor... Türetme kavramı yok. Her şeyi siz tanımlamak zorundasınız. Bu nedenle bu kadar esnek, güçlü ve bir o kadar da zor...

Bu programda conio.h dosyası sadece getch fonksiyonu için dahil edilmişse silmenizde sakınca yok.. Fakat bu konuda ilerlerseniz ve bu kaynaktan takip ederseniz, mutlaka conio.h karşınıza çıkacaktır tekrar. Ama conio.h başka bir fonksiyon için koyulmuşsa sildiğiniz zaman yine hata alırsınız. Fakat stream dediğine göre cin ve cout fonksiyonlarını  barındıran ilk dahil ettiğiniz başlık dosyası sanırım. Giriş - çıkışlar akım ile sağlandığına göre muhtemelen bu dosyadadır. Eğer tahmin ettiğim gibiyse silseniz bir şey olmaz...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

maydin95

getch ile conio.h yi sildikten sonra derlendi. Acaba bu işlevler sadece Windows için mi. Neyse ya C++ ya başlarsam bir çözüm buluruz inşallah. Bir e-kitap buldum orada C öğreniyorum. C++ yla karşılaşırsak biraz deneme yaparım.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

sem

getch(); fonksiyonu ve conio.h başlık dosyası; evet, Windows derleyicilerinde bulunuyor. getch()'nin bir benzeri getchar() fonksiyonudur ve standarttır. Yani siz de Linux altında kullanabilirsiniz (ikiside stdin (genel olarak klavyeden)'den bir karakter okumak için kullanılır). conio.h sorununa takılırsanız tekrardan,  ncurses ya da Linux için tekrar derlenmiş olanına bakarsınız... İyi günler kolay gelsin...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

maydin95

getch işlevinin neden kullanıldığını buldum. DevC/C++ gibi bir programda yazıyordu kodları arkadaş. Derle dedikten sonra çalıştır dediğinde komut istemi hemen kapanıyordu. Kapanmaması için conio.h ve getch işlevini kullanmış. O zaman klavyeden bir tuşa basmayı bekliyor.
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

sem

Alıntı yapılan: sem0900 - 29 Ağustos 2010 - 13:39:32
Siz gördüğüm kadarı ile uçbirimden derliyorsunuz bu nedenle getch(); fonksiyonuna ihtiyacınız olmaz... Çünkü dikkat ederseniz en sonda kullanmış, Windows'ta bunu kullanmazlarsa neler olduğu göremeden açılan siyah pencere kapanıyor. Bu getch(); sayesinde program kapanmadan önce bir tuş bekliyor klayveden...


Belirtmiştim ben size durumu gözden kaçmış sanırım...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

sem

Alıntı yapılan: maydin95 - 29 Ağustos 2010 - 15:01:08
getch ile conio.h yi sildikten sonra derlendi.

@maydin95, bu başlıktaki sorun çözülmüş gibi sanırım?
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

maydin95

Evet çözülmüştü gözden kaçmış konu kilitlenebilir
Din; ilimle birleşirse nefaset, cehaletle birleşirse rezalet, siyasetle birleşirse de felaket olur.

sem

İlk ileti değiştirlerek başlığa [Çözüldü] ibaresi eklenirse yetkili arkadaşlar daha çabuk fark edecektir. İyi akşamlar.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?