c18 tanımlama ne anlama geliyor

Başlatan fryrmnd, 07 Aralık 2011, 09:06:10

fryrmnd

#define MPFS_RESERVE_BLOCK            (137ul)

sadece yanındaki "ul" ifadesi nedir? ne anlama geliyor. teşekkürler.

JKramer

Unsigned long anlamına geliyor. Programın bir yerinde, bir sayıyla MPFS_RESERVE_BLOCK yani 137 bir işleme (çarpma gibi) tabi tutulursa, sonucun unsigned long olacağını garanti altına almış oluyor.

fryrmnd


fryrmnd

#if defined(__18CXX)
void main(void)
#else
int main(void)
#endif
{
.
.
.

if else bloğu bittikten sonra parantez açılmış. bu define makrosunun özelliğimi. c18 e bir alışmadım. yada ben c yi unuttum.

vsalma

o parantez main() metodunun parantezi gibi duruyor.

main()

{
}

fryrmnd

#5
cevaplar için teşekkürler. kodun tamamı baya uzun. yani parantezin kapanışına baktım. main() fonksiyonunun  gözüküyor. sonrasında fonksiyon tanımlamaları başlamış. anlamadığım #endif kısmı neden main in içinde
//
// Main application entry point.
//
#if defined(__18CXX)
void main(void)
#else
int main(void)
#endif
{
   static DWORD t = 0;
   static DWORD dwLastIP = 0;
   #if defined(WF_USE_POWER_SAVE_FUNCTIONS)
   BOOL  PsPollEnabled;
   BOOL  psConfDone = FALSE;
   #endif
.
.
.     

RcALTIN

Alıntı yapılan: fryrmnd - 07 Aralık 2011, 12:10:07
cevaplar için teşekkürler. kodun tamamı baya uzun. yani parantezin kapanışına baktım. main() fonksiyonunun  gözüküyor. sonrasında fonksiyon tanımlamaları başlamış. anlamadığım #endif kısmı neden main in içinde
//
// Main application entry point.
//
#if defined(__18CXX)
void main(void)
#else
int main(void)
#endif
{
   static DWORD t = 0;
   static DWORD dwLastIP = 0;
   #if defined(WF_USE_POWER_SAVE_FUNCTIONS)
   BOOL  PsPollEnabled;
   BOOL  psConfDone = FALSE;
   #endif
.
.
.   

çünkü derleyici direktifi oluyor başında # olan kodlar.

yani derleyiciye şöyle denmiş: Eğer __18CXX diye birşey tanımlanmışsa, fonksiyon şöyle başlasın:

void main(void)


yok tanımlanmamışsa fonksiyon böyle başlasın:
int main(void)


gerisi de fonksiyonun gövdesini oluşturuyor ve bu olay yukarıda da dendiği gibi c18'e has birşey değil.
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

fryrmnd

tamam duruma göre derleme olduğunu anladım. anlamadığımı anlatamadım galiba.  :) neden #endif. int main(void) bloğundan sonra gelmiyor. gelmesi gerekmez mi.

fryrmnd

şimdi anladım sağolun. ben #endif  yok olsa bile main bloğu içinde olduğu için hata vereceğini düşünmüştüm. zaten microchip in kendi stack ı. hata vermiyeceği kesin de bizim kafaya yatmamıştı işte.
söz dizimi hoş ama bu c ile biraz uğraşıcaz galiba. :(