Aynı programın bir sürü derleyicide derlenebilmesi

Aynı programın bir sürü derleyicide derlenebilmesi

Eskiden bir projemi kullanabileceğim dillere göre ayrı ayrı kodlayarak yapardım, ancak birinde bir değişiklik yaptığımda diğerleri aynı kalıyordu, tek tek onları da güncellemem gerekiyordu, eğer birşeyi unutursam, aradan zaman geçtiğinde hatırlamak güç oluyordu, aynı şeyleri baştan kodluyordum.

Artık daha sistemli bir yönteme başladım, neticede C dilini kullanıyorum ancak derleyicilerin ufak tefek farkları olduğu için bunları önişlemci direktifleri ile hallediyorum. Aşağıdaki örnekte C18, XC8, HI-TECH C dillerinden hangisi seçili ise onun bekleme fonksiyonunu kullanıyor.

    #if defined (__18CXX)
        Delay10TCYx(100); 
    #elif defined (__XC8)
        __delay_ms(250);
    #elif defined(HI_TECH_C)
        DelayMs(250);
   #endif

 

Notlar:

#if defined(HI_TECH_C) //HI TECH C derleyicisi seçili ise

#if defined (__18CXX) //c18 derleyicisi seçili ise

#if defined (__C30__) //c30 derleyicisi seçili ise

#if defined (__C32__) //c32 derleyicisi seçili ise

#if defined (__XC) //XC8 veya XC16 derleyicilerinden herhangi birisi seçili ise

#if defined (__XC8) //XC8 derleyicisi seçili ise

#if defined (__XC16) //XC16 derleyicisi seçili ise

#if defined (__XC) //c18 derleyicisi seçili ise

#if  defined(__XC8) || defined(__XC16) //XC8 veya XC16 derleyicilerinden herhangi birisi seçili ise

 

Duruma göre uyarı verme:

#if defined (__XC)
   #warning TEST: [XC8 Compiler = 1 (OK)]
#endif

#if !defined (__XC8)
   #error uzgunum bu kutuphane sadece xc8 derleyicisinde calisir.
#endif

 

 

Bir Cevap Yazın