# Operatörü
Makro tanımlarken kullanılan biçimsel parametrenin önüne # sembolü yerleştirilirse, makro çağrıldığında bu biçimsel parametreye karşılık gelen gerçek parametre bir stringe dönüştürülür.
ÖRNEK:
#define BASLIK(FORMAT,DEGER) \
NSLog(@#FORMAT,DEGER)
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int i=10;
BASLIK(\ni=%i ,i);
[pool drain];
return 0;
}
PROGRAMIN ÇIKTISI:
i=10
AÇIKLAMA:
Makro tanımında, #FORMAT tanımından ötürü, \ni=%d gerçek parametresi FORMAT adlı biçimsel parametre içine "\ni=%d" şeklinde bir string olarak aktarılmış ve printf fonksiyonu
NSLog(@"\ni=%d",i);
şeklinde çalıştırılmıştır.
## Operatörü
Makro tanımında biçimsel parametre ifadesinde ## sembollerinin bulunması, bu sembollerin her iki tarafında bulunan alanların birleştirileceği anlamındadır.
ÖRNEK:
#define BASLIK(FORMAT,DEGER) \
NSLog(@#FORMAT,KOK##DEGER)
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
int KOK1=10;
int KOK2=8;
BASLIK(\nKOK1=%7d.. ,1);
BASLIK(\nKOK2=%7d.. ,2);
[pool drain];
return 0;
}
PROGRAMIN ÇIKTISI:
KOK1= 10
KOK2= 8
AÇIKLAMA:
Makro tanımındaki, KOK##DEGER biçimsel parametre tanımından dolayı, BASLIK(\nKOK1=%7d.. ,1); makro çağrısındaki 1 gerçek parametresi, KOK ifadesi ile birleştirilerek KOK1 değişkeni elde edilir ve printf fonksiyonu ile bu değişkenin değeri yazdırılır. BASLIK (\nKOK2=%7d.. ,2); çağrısında ise, 2 değeri KOK ifadesi ile birleştirilerek printf ile KOK2 değeri yazdırılır.