C Ön İşlemci ve Makrolar

Bu öğreticide, c önişlemcilerle tanışacaksınız ve örnekler yardımıyla #include, #define ve koşullu derlemeyi kullanmayı öğreneceksiniz.

C ön işlemcisi, programınızı derlenmeden önce dönüştüren bir makro ön işlemcisidir (makroları tanımlamanıza izin verir). Bu dönüşümler, başlık dosyasının, makro genişletmelerin vb. Dahil edilmesi olabilir.

Tüm ön işleme yönergeleri bir #sembolle başlar . Örneğin,

 #define PI 3.14

C ön işlemcisinin yaygın kullanımlarından bazıları şunlardır:

Üstbilgi Dosyaları Dahil: #include

#includeÖnişlemci C programlarına başlık dosyaları dahil etmek için kullanılır. Örneğin,

 #include 

Burada stdio.hbir başlık dosyası var. #includeYönergesidir içeriğiyle yukarıdaki çizgiyi değiştirir stdio.hbaşlık dosyasına.

Yani kullanmak zorunda sebebi bu #include sen gibi işlevleri kullanmadan önce scanf()ve printf().

Ayrıca, işlev bildirimini içeren kendi başlık dosyanızı oluşturabilir ve bu önişlemci yönergesini kullanarak programınıza dahil edebilirsiniz.

 #include "my_header.h"

Başlık dosyalarını kullanma hakkında daha fazla bilgi edinmek için bu sayfayı ziyaret edin.

#Define kullanan makrolar

Makro, bir ad verilen bir kod parçasıdır. #defineÖnişlemci direktifini kullanarak C'de bir makro tanımlayabilirsiniz .

İşte bir örnek.

 #define c 299792458 // speed of light

Burada programımızda c kullandığımızda yerine geçmektedir 299792458.

Örnek 1: #define önişlemci

 #include #define PI 3.1415 int main() ( float radius, area; printf("Enter the radius: "); scanf("%f", &radius); // Notice, the use of PI area = PI*radius*radius; printf("Area=%.2f",area); return 0; )

Makrolar gibi işlev

Ayrıca, bir işlev çağrısı gibi benzer şekilde çalışan makroları da tanımlayabilirsiniz. Bu, işlev benzeri makrolar olarak bilinir. Örneğin,

 #define circleArea(r) (3.1415*(r)*(r))

Program her karşılaştığında circleArea(argument), ile değiştirilir (3.1415*(argument)*(argument)).

Diyelim ki, argüman olarak 5'i geçtiğimizde, aşağıdaki gibi genişliyor:

 circleArea(5) expands to (3.1415*5*5)

Örnek 2: #define önişlemcisini kullanma

 #include #define PI 3.1415 #define circleArea(r) (PI*r*r) int main() ( float radius, area; printf("Enter the radius: "); scanf("%f", &radius); area = circleArea(radius); printf("Area = %.2f", area); return 0; )

Makrolar ve #define önişlemci hakkında daha fazla bilgi edinmek için bu sayfayı ziyaret edin.

Koşullu Derleme

C programlamasında, önişlemciye bir kod bloğu ekleyip eklemeyeceğini söyleyebilirsiniz. Bunu yapmak için koşullu direktifler kullanılabilir.

Tek ifbir büyük farkı olan bir ifadeye benzer .

ifDeyimi yürütme önce programda kod bloğu koşul içerecek şekilde kullanılır, oysa kod bloğu yapılıp gerekip gerekmediğini kontrol edin (veya atlama) için yürütme süre içinde test edilir.

Koşullu Kullanımlar

  • makineye, işletim sistemine bağlı olarak farklı kod kullanın
  • aynı kaynak dosyayı iki farklı programda derleyin
  • belirli bir kodu programdan çıkarmak, ancak gelecekteki amaç için referans olarak tutmak

Koşullu nasıl kullanılır?

Koşullu kullanmak için #ifdef, #if, #defined, #elseve #elseifdirektifler kullanılmaktadır.

#ifdef Direktifi

 #ifdef MACRO // conditional codes #endif 

Burada koşullu kodlar, sadece MAKRO tanımlanmışsa programa dahil edilir.

#if, #elif ve #else Direktifi

 #if expression // conditional codes #endif 

Burada ifade, tam sayı türünün bir ifadesidir (tamsayılar, karakterler, aritmetik ifade, makrolar vb. Olabilir).

Koşullu kodlar, yalnızca ifade sıfır olmayan bir değer olarak değerlendirilirse programa dahil edilir.

Opsiyonel #elseyönerge, #ifyönerge ile birlikte kullanılabilir .

 #if expression conditional codes if expression is non-zero #else conditional if expression is 0 #endif 

Ayrıca, bir iç içe koşullu ekleyebilir #if… #elsekullanarak#elif

 #if expression // conditional codes if expression is non-zero #elif expression1 // conditional codes if expression is non-zero #elif expression2 // conditional codes if expression is non-zero #else // conditional if all expressions are 0 #endif 

#defined

#Defined özel operatörü, belirli bir makronun tanımlanıp tanımlanmadığını test etmek için kullanılır. Genellikle #if yönergesi ile kullanılır.

 #if defined BUFFER_SIZE && BUFFER_SIZE>= 2048 // codes 

Önceden Tanımlanmış Makrolar

İşte C programlamada önceden tanımlanmış bazı makrolar.

Makro Değer
__DATE__ Geçerli tarihi içeren bir dize
__FILE__ Dosya adını içeren bir dize
__LINE__ Mevcut satır numarasını temsil eden bir tam sayı
__STDC__ ANSI standart C'ye uyuyorsa, değer sıfır olmayan bir tamsayıdır
__TIME__ Geçerli tarihi içeren bir dize.

Örnek 3: __TIME__ kullanarak geçerli saati alın

Aşağıdaki program mevcut zamanı __TIME__makro kullanarak çıkarır.

 #include int main() ( printf("Current time: %s",__TIME__); )

Çıktı

 Şu anki saat: 19:54:39

Önerilen Okumalar

  • Hat kontrolü
  • Pragmalar
  • Önişlemci Çıkışı
  • Diğer direktifler

Ilginç makaleler...