10.2 Makrolar

<< İçindekileri Görüntülemek İçin Tıklayın >>

Yer:  Teknik Kılavuzlar > IVEDI SQL Kullanıcı Kılavuzu > 10. Önişlemci >

10.2 Makrolar

#DEFINE <AD> [<değer>]
#DEFINE <AD>(<p1>[, <p2> …]) <değer>
#UNDEF <AD>

Fonksiyon benzeri bir makroda ( ada yapışık yazılır; nesne benzeri makroda addan sonra boşluk, sekme ya da satır sonu gelir. Gövde, satır sonundaki \ ile sonraki satıra devam eder; devam satırlarının ortak baştaki girintisi kırpılır. Aynı adı yeniden tanımlamak eski tanımı siler ve uyarı verir; tanımsız bir adı #UNDEF etmek uyarı verir.

Makro çağrısı çıplak tanımlayıcıdır (büyük/küçük harf duyarsız) ve tarayıcı onu gördüğü her yerde açar. #AD bir makro başvurusu değildir: satır başındaki # yalnız yönerge başlatır ve bilinmeyen yönerge hatadır.

YazımNe yapar
#<parametre>Argümanı dizgiye çevirir (tırnaklar)
##Belirteçleri birleştirir
%%<ad>Adı açılmaktan kaçırır
{$<ad>}Bir makroyu ya da parametreyi dizgi sabitinin içinde açar; ad tanımlı değilse boş dizgi yazılır
{$<ad>$}Aynısı, ama ad tanımlı değilse adın kendisi yazılır
#DEFINE MESAJLAR NS_MESAJLAR
'delete from {$MESAJLAR$}'      --// 'delete from NS_MESAJLAR'  (tanımsızsa 'delete from MESAJLAR')
'a{$TANIMSIZ}b'                 --// 'ab'
'a {$TANIMSIZ$} b'              --// 'a TANIMSIZ b'

{$<ad>} yalnız nesne benzeri makro ve parametre alır; fonksiyon benzeri bir makro dizgi içinde açılamaz (hata). Açılan değerdeki tek tırnak ikilenir. Açılım çok satırlı dizgilerin devam satırlarında ve q'…' dizgilerinde de yapılır. Aynı yazım derleyicinin ön tanımlı sabitlerini (__FILE__, __LINE__ …, bkz. bölüm 8) de dizgi içine yazar.

{$<ad>$} özellikle NATIVE_SQL metnindeki tablo makroları için kullanılır: dizgi içindeki çıplak makro adı açılmaz; bu biçim ise makro tanımlı olan derlemede değerini, tanımsız olanda düz adı yazar.

Fonksiyon benzeri bir makro tam argüman sayısı ister; boş argüman için parantez içine boşluk konur. Makro açılımının özyineleme sınırı 100'dür.

Sınır

... bir parametre adı olarak kabul edilir ama __VA_ARGS__ karşılığı yoktur; değişken sayıda argüman alan makro yazılamaz.

10.2.1 Motorun tanımladığı makrolar

MakroAnlamı
__IVEDI__Yalnız motorun koşturacağı metinde, yani #MODE EXECUTE'ta tanımlıdır; #MODE CONVERT TO ve #MODE PRECOMPILE'da tanımsızdır. Kipten hesaplanır; betikten #DEFINE ya da #UNDEF edilemez (hata).
__WINDOWS__, __LINUX__Platforma göre tam biri tanımlıdır
__PLATFORM__'windows' ya da 'linux' (tırnaklı dizgi sabiti)
__NOSHELL__Betik tanımlar; tanımlıyken #SHELL* yönergeleri devre dışıdır (bkz. “Ortam ve kabuk yönergeleri”)