Merhaba ve tekrar hoş geldiniz.
Bu konuşmada şunları yapmak istiyorum Çalışabileceğiniz diğer konular
hakkında konuşmak için.
Temel olarak sınıfı bitiriyoruz.
Bitiriyoruz.
Ve bu yüzden alamadık her şeyi kapsamak için.
Açıkçası, bu bir başlangıç sınıfı.
Bu yüzden birçok gelişmiş gerçekten, gerçekten olmak için c için
daha fazla çalışabileceğiniz konular C programlamada harikayım ve sadece birkaç tanesinden
bahsetmek istedim.
İlk olarak, biz typedef'lere girmek.
Ben de isterdim ki Bundan bahsetmiştik ama
bu daha ileri bir kavram.
Enumlar hakkında konuştuk.
Ve enum bir yoludur kendi türünüzü yaratmak.
Ama özellikle C'de typedef adlı bir anahtar sözcük ile kendi veri türlerinizi
oluşturabilirsiniz.
Bu çok faydalı, daha fazlası gelişmiş bir konsept.
Kesinlikle yapabilirsin bu konuda daha fazla bilgi edinin.
Burada çok daha fazla bilgi var. önişlemci hakkında bilgi edinebilirsiniz,
özellikle dize birleştirme.
Önişlemci şunları hatırlar derleyiciden önce çalışır.
Hakkında bilgi edindik tanımlanmış ifade.
Birkaç şey daha öğrendik Burada ve orada, ancak önişlemci ile
tamamen başka bir bölüm olabilir çok daha fazla bilgi var.
Temel olarak aşağıdakiler için kullanabilirsiniz Kodunuzun çoğunu optimize edin, böylece önceden
çalıştırabilirsiniz.
Satır içi işlevler yapabilirsiniz önişlemci içinde çalışan,
bir sürü güzel kavram.
Boşluk yıldızlarında çok daha fazlası var.
Boşluk yıldızları, unutmayın, çok fazla esneklik.
Özellikle, malloc işlevi boş bir yıldız döndürür.
Boşluğu alan fonksiyonlar oluşturabiliriz işaretçilerini kullanabilir ve daha esnek hale getirmek
için void işaretçilerini aktarabilirsiniz.
Çok daha fazlası var bunun üzerinde çalışabiliriz.
Statik kütüphaneler ve paylaşılan nesneler.
Bunun hakkında konuşmamıştık. kütüphane kavramı.
Bağlantı kurarken kütüphaneleri kullanırız.
Özellikle, birçok kütüphaneleri c standart
kütüphanelerinde tanımlanmıştır.
Ancak kendi kütüphanelerinizi oluşturabilirsiniz.
Programlar oluşturduk.
Programlar süreçlerdir bellekte çalışan.
Ancak kütüphaneler aslında başka kodlardır diğer programlarda yeniden kullanabilirsiniz.
Örneğin, c standart kütüphanesi.
Başka bir programda programladıysanız diller, genellikle dille birlikte
gelen API'lerdir.
İki tür var oluşturabileceğiniz kütüphaneler.
Bir statik oluşturabilirsiniz bağladığınızda tüm
bu kodu derlediğiniz kütüphane.
Ve sonra da paylaşılan bir nesnesini programın yürütülmesi
sırasında işlevleri arar ve onları çağırır.
Bu yüzden statik kütüphaneler genellikle sonlandırılır ve statik
zamanda derlenirler veya derlenirler programı derlediğinizde.
Paylaşılan nesneler dot so dosyalarıdır ya da bunları dll'ler olarak da düşünebilirsiniz.
Dinamik olarak bağlanan kütüphaneleri ve visual c plus
plus'ı hiç duydunuz mu?
Ancak paylaşılan nesneler derleme zamanı değildir.
Yine, kodu yeniden kullanmanın bir yoludur.
Bu kavramlar üzerinde çalışabiliriz ve size paylaşılan nesnelerin yanı sıra statik kütüphanelerin
nasıl oluşturulacağını da gösterebilir.
Makrolar.
Şansımız olmadı. bir makro hakkında konuşmak için.
Bu ileri düzey bir konudur.
Bu, önişlemci tarafından çalıştırılır esas olarak ikame, dize ikamesi
yapmak için.
Bazı fonksiyonlarımız aslında assert makrosu
gibi makrolar olarak yazılır.
Makrolar keşfedilebilir çok daha ayrıntılı olarak.
Sendikalar.
Sendikalar genellikle yapılarla birlikte gider.
Birden fazla farklı içinde döndürülen veri türleri veya farklı
üye öğe türleri aynı şeyi temsil eden yapı.
Yani bir yapıya sahip olabilirsiniz bir üyesi vardır, ancak bu üye bir kayan
değer girebilir ve Bunu yapmak için sendikayı kullanırsınız.
Diğer konular fonksiyon işaretçileri.
Karakter hakkında konuştuk göstericiler ve hatta tamsayı göstericiler
ve çift göstericiler.
Ama aslında işaretçileriniz olabilir çeşitli işlevlere işaret eder.
Yani programınız çalışırken, bir işlevi çalıştırabilirsiniz.
Ve bir dahaki sefere çalışır, kullanıcı girdisine bağlı olarak farklı
bir işlev yürütebilir ya da onun gibi bir şey.
Fonksiyon işaretçileri tamamen başka bir konu.
Gelişmiş işaretçiler.
İşaretçiler için çok daha fazlası var tartıştığımızdan daha fazla.
Temellerini tartıştık İşaretçiler hakkında çok daha
detaylı konuşabiliriz.
İşaretçiler için gerçek işaretçiler vardır, Yani çift işaretçiler var
ve bu daha gelişmiş bir üst konu.
Fonksiyonlar için değişken argümanlar.
Bunlar şu şekilde adlandırılır varyatik fonksiyonlar olarak.
printf fonksiyonunu kullanırız değişken sayıda argümanı
olan, ancak tanımlamadığımız değişken sayıda argümana sahip olduğumuz herhangi
bir fonksiyonda bu kavramı keşfetmek çok faydalı.
Dinamik bağlantı.
Bu, bir bilgisayar açtığınızda kütüphanesinden farklıdır ve paylaşılan bir nesneden biraz
daha farklıdır.
Kütüphaneleri açabilirsiniz çalışma zamanında performansı artırır
ve çalıştırılabilir programlar daha küçük.
Yani dlm açık gerçek bir bunu yapmak için kütüphane çağrısı.
Sinyaller, çatallanma süreçler arası iletişim.
Bunların hepsi süreçler arası araştırılabilir iletişim, iletişim kurmak isteyen iki programınız
olduğunda gerçekleşir.
Farklı yollar var iletişim kurabilirler.
Dosyalar aracılığıyla iletişim kurabilirler.
Aşağıdakiler aracılığıyla iletişim kurabilirler Soket denen bir şey.
Boru kullanarak iletişim kurabilirler.
Farklı teknikler var orada, ama iki süreç birbiriyle konuşmak
istediğinde.
Çatallama, aşağıdakileri yapabileceğiniz yerdir başka bir süreç oluşturun.
Oluşturulacak kütüphaneler var kodunuzdaki diğer işlemler.
Eğer başka bir kodunuzdaki süreç, kendi
adres bellek alanına sahip olacaktır ve programınızı biraz daha verimli hale
getirebilir.
Ve sonra sinyaller, biz içine alamadım çok fazla, ancak sinyaller hata
ayıklama için farklı farklı programlara mesajlar gönderir.
Threading ve eşzamanlılık.
Bir başka gelişmiş konu çalışmak istediğiniz.
Bu, çoklu yürütmeye izin verir programınızın içindeki noktalar.
Kod çalıştırmanıza izin verir neredeyse aynı anda.
Yani verimlilikle ilgili bir şey.
Uzun süredir devam eden bir göreviniz varsa programınızda yapmanız gerekenler,
örneğin verileri izlemek veya veya göreviniz büyük bir dosyayı okumak olabilir, başka
bir Bunu yapmak için iş parçacığı ve ardından programınızın diğer bölümlerini
çalıştırmaya devam edin aynı anda birlikte.
Soketler.
Soketler ağ iletişimi için kullanılır.
İsterseniz soketler kullanılabilir başka bir bilgisayara bağlanmak ve diğer
bilgisayardan veri almak için.
Ağ oluşturma çok çok büyük çünkü biz internet ve diğer her şey var.
Böylece aşağıdakiler hakkında her şeyi öğrenebilirsiniz prizler ve aynı zamanda bakın.
İki işlev vardır setjump ve longjump olarak adlandırılır.
Bu eyaletin yeniden yapılandırılması için.
Bunları şurada inceleyebiliriz bellek yönetimi ve parçalanma hakkında
daha fazla ayrıntı.
Bu sadece malloc ile ilgili değil, aynı zamanda belleğinizi bu şekilde yönetebilir ve
yığına ya da heap'e koyabilirsiniz.
Programınızın aşağıdaki özelliklere sahip olduğundan emin olabilirsiniz biraz daha verimlidir,
bu nedenle çok fazla parçalanma olmaz.
Parçalanma, belleğinizin olduğu yerdir farklı yerlerde ve sıralı
değil, bu yüzden daha zor olabilir o anıya bakmak için daha fazla zaman ayırın.
Parçalanmayı azaltabilirsiniz.
Bunu yapmak için çalışabiliriz. programlar daha taşınabilir.
Genel olarak, c programları oldukça taşınabilir.
Ancak daha fazla teknik var Programınızı bir kez yazdığınızda, çalıştığından emin olmak için
kullanabilirsiniz Birçok farklı işletim sisteminde ve yeniden yazmak
zorunda değilsiniz.
Esasen şunu kullanabiliriz c'de mevcut olan posix standartlarından
bazıları.
Şundan emin olabiliriz ki C standardının hangi farklı
versiyonunda belirli kuralları kullanarak birden fazla standartta
çalışabilir.
Ayrıca şu programları da yazabiliriz doğrudan çekirdek ile arayüz oluşturur.
Unutmayın, çekirdek işletim sisteminin beyinleri.
Çekirdek tüm sürücüleri içerir.
Her türlü çağrıyı içerir daha düşük seviyeli bellek işlevlerine.
Bir sürü şey yapıyor farklı bilgiler.
Yani çekirdeğin kendine özgü c programınızda onunla arayüz oluşturabileceğiniz
işlevsellik.
Bu düşük olacaktır seviye gömülü şeyler.
Bu yüzden çağrıları kullanabiliriz IO kontrolleri gibi.
Şunlar için sürücüler oluşturabiliriz donanımla doğrudan konuşun.
Derleyicide çok daha fazlası var ve derleyiciye iletebileceğiniz
farklı bayraklar veya Bu da programınızı daha verimli hale getirir.
Bunu yapma şansımız olmadı. birçok farklı
bayrak hakkında çok konuştuk.
Esas olarak gösterge paneli hakkında konuştuk duvar ve diğer bazı temel şeyler,
ancak daha gelişmiş bir şey yok.
Hata ayıklayıcı hakkında konuştuk ve uygulamalarda nasıl hata ayıklanacağı.
Kod bloklarındaki hata ayıklayıcı grafiksel kullanıcı arayüzü aracılığıyla.
Ancak bir hata ayıklayıcının gerçek avantajı kaputun altında gdb kullanıyor.
Gdb, gnu hata ayıklayıcısıdır.
Ve sadece kesme noktalarından bahsettik ve grafik kullanıcı arayüzü aracılığıyla kullanabilirsiniz,
ancak Aslında gdb ile çok daha fazlasını yapabilirim.
Gdb hata ayıklayıcısından gidebiliriz Konsoldan farklı komutlar verebilir,
çok daha fazlasını yapabilirsiniz. çekirdek dosyasının gdb kullanılarak
nasıl okunacağını anlamak, bir çok güzel ileri düzey konular var.
Profil oluşturma ve izleme araçları.
Bazıları hakkında konuşamadık statik analizörler, kodunuzu sizden önce analiz edebilen
bazı araçlar herhangi bir ölü kod olup olmadığını görmek için
programınızı çalıştırın veya herhangi bir kötü programlama uygulaması.
Ve sonra izleme araçları da, s trace, d trace, g profile, bunların hepsi kullanabileceğiniz önemli
araçlardır. hata ayıklamanıza yardımcı olmak ve verimliliği ölçmenize yardımcı
olmak için kullanın veya Ne kadar bellek kullandığınızı veya programınızın performansını.
Başka ek bellekler de var valgrind gibi hata ayıklama araçları.
Bu, şu özelliklere sahip olduğunuzda yardımcı olur yarış koşulları veya bellek
bozulması sorunlarınız var.
Bir çok kez yönetirken ve tampon taşmaları veya bellek sızıntıları
varsa, bu onları bulmak çok çok zor.
Yani orada yapabilecek araçlar var valgrind gibi olanları bulmanıza yardımcı olur.
Ve bu yüzden birçok farklı c konusunda uzman olmak için
keşfedebileceğiniz konular.
Temel konulara değindik.
Gerçekten ama gerçekten Başlamak için önemli şeyler.
Ancak bu ek konularında uzman olabilirsiniz.
Teşekkür ederim.