Her Yönüyle C
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Her Yönüyle C

Hepsi Burada
 
AnasayfaAnasayfa  PortalliPortalli  GaleriGaleri  AramaArama  Latest imagesLatest images  Kayıt OlKayıt Ol  Giriş yapGiriş yap  

 

 C MAKROLARI

Aşağa gitmek 
YazarMesaj
Admin
Admin
Admin


Erkek
Mesaj Sayısı : 804
Yaş : 35
Location : KoCaElİ
Kayıt tarihi : 29/10/07

Character sheet
Field:
C MAKROLARI Left_bar_bleue100/100C MAKROLARI Empty_bar_bleue  (100/100)

C MAKROLARI Empty
MesajKonu: C MAKROLARI   C MAKROLARI Icon_minitimePtsi Kas. 12, 2007 2:17 am

GirişMakro bildirimleri veya önişlemcileri (direktifleri) derleme öncesi komutlarıdır. Bunlar tipik olarak:

  • programları değiştirmek
  • program parçalarını kaynak programında birleştirmek
  • derleme sırasında bazı uyarı mesajlarını aktif veya pasif hale getirmek
için kullanılır. Genelde makro bildirimleri kaynak dosyaların en başında verilir.
C dilinde kullanılan önişlemciler şöyledir: #include #define #pragma
#error #undef #ifdef #ifndef
#if #else #elif #endif

#includeBu önişlemci verilen dosyanın içeriğini, kullanıldığı yerde kaynak dosyasının içine ekler. Çoğunlukla derleyiciye ait komut kütüphanelerinde bulunan fonksiyonların prototiplerinin ve diğer çeşitli tanımlamaların bulunlunduğu (h uzantılı) başlık dosyalarının programa dahil edilmesinde kullanılır[2]. İki tür kullanımı vardır:
#include veya #include "dosya_adı.h"

  • Birinci kullanımda dosyanın nerede bulunduğu derleyici için verilen ulaşım yolu ile belirlenir. Bu yol genellikle include dizini ile son bulur. Başlık dosyalarının saklandığı include dizini

    • Borland firmasına ait Turbo C derleyicisinde : C:\TC\INCLUDE
    • Linux ortamında : /usr/include şeklindedir.


  • İkinci kullanımlada dosyanın bulunduğu yer aktif dizin olarak kabul edilir. Aksi halde yol tam olarak verilmelidir.
#include deyimi ile program ilave edilecek dosya C fonksiyonları içerebileceği gibi basit deyimler de içerebilir. Bunun için bir sınırlandırma yoktur. Hatta uzantıları .h olması bile gerekmez. Program 20.1 ve Program 20.2'yi inceleyin.

Program 20.1: #include önişlemcisinin kullanımı için bir örnek




[color=gray] 1:
/* 20prg01.c: DATA-port uçlarına sırasıyla 1 değerini gönderir */
2:
3: #include <stdio>
4: #include <dos>
5: #include <conio>
6: #include <math>
7: #include "port.h"
8:
9: main()
10: {
11: int veri,sayac;
12:
13: sayac = 0; /* döngü sayacı */
14: veri = 1;
15:
16: do
17: {
18: outportb(DATA,veri); /* DATA portuna int veri yaz */
19: printf("\nPorta yazilan veri : %3d %08ld",veri,cevir_taban2(veri));
20: veri <<= 1; /* veriyi binary olarak birer-birer sola kaydır! */
21: delay(500); /* bekle... */
22: sayac++;
23: }while( sayac<8> tcc 20prg01.c
C:\TC> 20prg01

- - - -

Çıktı:
ÇIKTI




Porta yazilan veri : 1 00000001
Porta yazilan veri : 2 00000010
Porta yazilan veri : 4 00000100
Porta yazilan veri : 8 00001000
Porta yazilan veri : 16 00010000
Porta yazilan veri : 32 00100000
Porta yazilan veri : 64 01000000
Porta yazilan veri : 128 10000000

Program 20.2: #include önişlemcisinin kullanımı için bir örnek




[color=gray] 1:
/* 20prg02.c: DATA-port uçlarına sırasıyla 1 değerini gönderir */
2:
3: #include <stdio>
4: #include <dos>
5: #include <conio>
6: #include <math>
7: #include "port.h"
8:
9: main()
10: {
11: #include "bildirim.inc"
12:
13: do
14: {
15: outportb(DATA,veri); /* DATA portuna int veri yaz */
16: printf("\nPorta yazilan veri : %3d %08ld",veri,cevir_taban2(veri));
17: veri <<= 1; /* veriyi binary olarak birer-birer sola kaydır! */
18: delay(500); /* bekle... */
19: sayac++;
20: }while( sayac<8> tcc 20prg02.c
C:\TC> 20prg02

- - - -

Çıktı:
ÇIKTI




Porta yazilan veri : 1 00000001
Porta yazilan veri : 2 00000010
Porta yazilan veri : 4 00000100
Porta yazilan veri : 8 00001000
Porta yazilan veri : 16 00010000
Porta yazilan veri : 32 00100000
Porta yazilan veri : 64 01000000
Porta yazilan veri : 128 10000000

#defineBu önişlemci komutu, kaynak dosyada bir isim yerine başka bir isim yerleştirilmesini sağlar. Programda kullanılan bu sembolik isimler başta ana program olmak üzere bütün alt programlarda da aynı değere sahiptir. Yani #define önişlemcisi ile tanımlanan her ne olursa olsun, tanımlama bütün fonksiyonlarda kullanılabilir. Bir çeşit genel (global) bildirim gibi davranır. Örneğin:

Program 20.3: #define önişlemcisinin kullanımı




[color=gray] 1:
/* 20prg03.c: #define önişlemcisinin kullanımı */
2:
3: #include <stdio>
4:
5: #define PROGRAM main()
6: #define BASLA {
7: #define BIT }
8: #define YAZ printf
9:
10: PROGRAM
11: BASLA
12: YAZ("Merhaba C!..\n");
[color:4bb4=gray:4bb4]13: BIT
Program 20.3 derleme işleminden önce #define ile verilen ilk sembolik isimler yerine ikinci isimler yerleştirildikten sonra program aşağıdaki durmuma gelir:
/* 20prg03.c: #define önişlemcisinin kullanımı */

#include <stdio>

main()
{
printf("Merhaba C!..\n");
}
Bu önişlemciyi kullanak sembolik sabitler tanımlamak mümkündür. Örneğin:
#define PI 3.1415926
#define IKI_PI 2.0*PI
#define YUZ 100
gibi. #define önişlemcisinin kullanımı için iyi bir örnek Program 20.4 de verilmiştir. Program km/s biriminde verilen bir hızı m/s birimine çevirir[4].

Program 20.4: #define önişlemcisinin kullanımı




[color=gray] 1:
/* 20prg04.c: km/s biriminde verilen hızı m/s cinsinden hesaplar */
2:
3: #include <stdio>
4:
5: #define km *1000.0
6: #define saat *3600.0
7:
8: main()
9: {
10: double yol,zaman,hiz;
11:
12: yol = 100 km;
13: zaman = 1.2 saat;
14:
15: hiz = yol/zaman;
16:
17: printf("HIZ = %lf m/s\n",hiz);
18:
[color:4bb4=gray:4bb4]19: }
5. ve 6. satırda tanımlanan sembolik sabitler km ve saat program içinde kullanıldığında sol taraflarındaki sayıyı sırasıyla 1000 ve 3600 ile çarparlar. 12. satırdaki yol değişkenine 100*1000.0 değeri atanır. Benzer olarak 13. satırdaki zaman değişkenine 1.2*3600.0 sayısı atanır. Dikkat edilirse sembolik sabitler kullanıldığında programın okunurluğu artmakta ve bundan dolayı hata ayıklama kolaylaşmaktadır.

DERLEME ve ÇALIŞTIRMA



Turbo C (MS DOS)
GCC (Linux)

C:\TC> tcc 20prg04.c
C:\TC> 20prg04
$ gcc 20prg04.c -o 20prg04
$ ./20prg04

ÇIKTI




HIZ = 23.148148 m/s
Sayfa başına dön Aşağa gitmek
https://cprogramlama.yetkin-forum.com
 
C MAKROLARI
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» C MAKROLARI (BOLUM 2)
» C MAKROLARI (BOLUM 3)

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Her Yönüyle C :: C Programlama :: C Konu Anlatımları-
Buraya geçin: