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.h
bir başlık dosyası var. #include
Yönergesidir içeriğiyle yukarıdaki çizgiyi değiştirir stdio.h
baş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 if
bir büyük farkı olan bir ifadeye benzer .
if
Deyimi 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
, #else
ve #elseif
direktifler 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 #else
yönerge, #if
yö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… #else
kullanarak#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