C++ __FILE__ makrosu

C File Makrosu



Makrolar, belirli bir ada sahip bazı komut dosyalarındaki bazı kod parçalarıdır. Makrolardan herhangi biri yürütüldüğünde, belirli bir görevi gerçekleştirmek için bunların arkasındaki kod yürütülür. Aynen bunun gibi, __FILE__, C++ dilinde belirli bir dosyanın yolunu bulmak için kullanılan bir makrodur. Dolayısıyla, bugün bu kılavuzda bir C++ __FILE__ makrosunun çalışmasını tartışacağız.

Örnek 01:

Terminal konsol uygulamasını başlatarak C++'daki ilk __FILE__ makro örneğini ele alalım. Bunu yapmak için “Ctrl+Alt+T” kısayolunu kullanıyor olabilirsiniz. Kabuğu açmanın başka bir yolu, kısayol tuşunu unuttuysanız, Etkinlik alanı menüsünü kullanmaktır. Terminal konsolu ekranınızda başlatıldıktan sonra, içinde kod yazmak için yeni bir c++ dosyası oluşturmayı deneyin. Aşağıdaki ekli resimde gösterildiği gibi basit bir 'dokunma' sorgusu ile bir dosya oluşturulabilir. Yeni oluşturulan bir dosyanın adı “touch” anahtar sözcüğü ile verilmelidir.







Yeni oluşturulan dosyaları kodlamak ve açmak için Ubuntu 20.04 Linux sisteminizde kurulu bir düzenleyici olmalıdır. Linux kullanıcıları arasında yaygın olarak bilinen en çok tavsiye edilen editörler GNU Nano ve Vim editörüdür. Bunun dışında, daha önce bahsedilen editörlerin her ikisinin de çalışmaması durumunda metin editöründen de yararlanılabilir. Yani, GNU Nano editörünü zaten kurduk. Böylece, kod yapmak için dosyayı açmak ve düzenlemek için kullanacağız. Düzenleyicinin çalışmasını sağlamak için dosya adıyla birlikte 'nano' anahtar sözcüğünü kullanın.





Artık yeni oluşturulan C++ dosyası macro.cc düzenleyicide kodlamaya hazırdır. __FILE__ makrosunun çalışmasını görmek için bu makaleyi uygularken C++ kodunu uygulamaya başlayalım. En üstüne standart input-output başlığını ekleyerek C++ kodumuza başlamış olduk. Bunu yapmak için hash işaretiyle birlikte “include” anahtar kelimesi kullanılmıştır. Bu başlık olmadan, C++ kodunun girdisi ve çıktısı, derleme ve yürütme sonrasında konsolda çalışmayacaktır.





main() yöntemi, yürütmenin ondan başladığı ve içinde bittiği için kodumuzun temel direğidir. main() yöntemi içinde asıl iş yapılacaktır. __FILE__ makrosunun işlevselliğini açıklamak için main() yöntemimizde tek satırlık bir kod kullanıyoruz. Bu nedenle, burada iki değeri argüman olarak alan printf deyimi kullanılmıştır, yani, dosya adını ve makro işlevini alan dize.

__FILE__ makrosu burada geçerli dosya yolunu veya adını almak için kullanılır. “%S”, bir dosyanın geçerli yolunu veya bir dizi içindeki adını yazdırmak için kullanılırken. Çalıştırmadan önce “Ctrl+S” kısayolu yardımıyla kodunuzu kaydetmelisiniz. Artık kod kaydedildi, “Ctrl+X” kısayolunu kullanarak kabuk terminaline geri dönmeyi deneyin.



__FILE__ makrosu için C++ koduyla işimiz bittiğine göre, C++ kodunu derlemeye başlayalım. Derleme için, C++ kodunu derlemek için g++ derleyicisini zaten kurduk. Bu nedenle, “macro.cc” dosyasını derlemek için uçbirimde g++ derleyicisi kullanılmıştır. Derlemenin ardından hiçbir şey döndürmez, bu da macro.cc dosyasının içindeki C++ kodunun anlamsal olarak doğru olduğunu gösterir. Derlemeden sonra sıra bir kodun çalıştırılmasına gelir. Kod dosyasını çalıştırmak için “./.aout” basit sorgusunu kullanma eğilimindeyiz. macro.cc dosyasını çalıştırdığımızda karşıdaki gibi bir dosya ismini almış oluyoruz. C++ __FILE__ makrosu bu şekilde çalışır.

Örnek 02:

Ubuntu 20.04 sistemindeki C++ __FILE__ makrosunun işlevselliğine bakmak için derinlere inmek için başka bir örnek verelim. C++ __FILE__ makrosunun, bahsedildiği bir dosyanın dosya yolunu getirmek için kullanıldığında nasıl çalıştığını gördüğümüz gibi.

Şimdi, şu anda üzerinde çalıştığımız dosyadan başka bir dosyanın yolunu veya adını almak için C++ __FILE__ makrosunu kullanacağız. Böylece, kodu güncellemek için aynı macro.cc dosyasını GNU Nano editöründe açtık. İnclude anahtar kelimesiyle standart girdi-çıktı başlığını ekledik ve tamsayı dönüş türüyle bir main() işlevi başlattık.

main() yönteminde, şu anda üzerinde çalıştığımız geçerli dosya yolunu almak için ilk print ifadesi eskisi ile aynıdır. Bundan sonra ardışık bir satırda #line anahtar kelimesini başka bir dosya adıyla yani “new.txt” ile kullandık. Bu, adını veya yolunu alacağımız geçerli dosya dışındaki dosyayı belirtmek içindir. Bir sonraki printf deyimi, bir C++ __FILE__ makrosu yardımıyla “new.txt” dosyasının yolunu yazdırmak için kullanılmıştır. Derleme sırasında sorun yaşamamak için yeni güncellenen kodunuzu kaydedin. Bunu yapmak için “Ctrl+S”yi kullanın.

Güncellenen dosyayı kaydettikten sonra, klavyenizden “Ctrl+X” ile çıkın. Şimdi, kabuk ekranına geri döndük.

Güncellenen dosyayı derleyelim. Bunu yapmak için macro.cc dosyasının adıyla g++ derleyicisini kullanın. Başarılı bir derlemeden sonra konsolda “./a.out” komutu ile kodu çalıştırın. Çıktı, önce mevcut dosyanın yolunu gösterir, ardından diğer dosyanın yolunu gösterir, kabuk ekranında 'new.txt' görüntülenmiştir. Kabukta dosya yolunu görüntülemek için __FILE__ makrosunu kullanmanın ne kadar kolay olduğuna bir bakın.

Örnek 03:

C++'daki __FILE__ makrosu ile birlikte __LINE__ makrosuna bir göz atalım. __LINE__ makrosu, makronun kullanıldığı dosyanın satır numarasını gösterecektir. Bu nedenle, aynı dosyayı açın ve her iki printf ifadesini de güncelleyin. C++ __LINE__ makrosundan önce C++ __LINE__ makrosunu ekledik. Bu __LINE__makro, __FILE__ öğesinin önce geldiği geçerli bir dosyanın satır numarasını alıyor. Bir sonraki __LINE__ makrosu diğer dosyanın ilk satır numarasını alırken, satır numarasını kodda dosya adı ile zaten belirtmiştik.

Dosyayı kaydedip çıktıktan sonra kabuk terminaline geri dönmüş oluyoruz. C++ macro.cc dosya kodunu derlemek için aynı g++ komutunu kullanıyoruz. Başarılı derleme yürütme komutuna yol açar. Şimdi bunu yapmak için “./a.out” komutu burada kullanılıyor. Yürütme bize ilk dosyanın, yani 3. satırdaki geçerli dosyanın, __FILE__ makrosunun ise kodda belirtilen diğer dosyanın ilk satırında olduğunu söyler.

Çözüm:

Bu makale, makroların tanımını içerir ve Ubuntu 20.04 sisteminde C++ __FILE__ makrosunun kullanımını tartışır. C++ __LINE__ makrosu, C++ __FILE__ makrosunun çalışmasını daha fazla göstermek için bazı örneklerde de tartışılmıştır. Özetle, bu makalenin C++ __FILE__makro ile en iyi şekilde size yardımcı olacağını umuyoruz.