Picproje Elektronik Sitesi

DERLEYİCİLER => Microchip MPLAB C serisi => Microchip C18 => Konuyu başlatan: fryrmnd - 07 Aralık 2011, 09:06:10

Başlık: c18 tanımlama ne anlama geliyor
Gönderen: fryrmnd - 07 Aralık 2011, 09:06:10
#define MPFS_RESERVE_BLOCK            (137ul)

sadece yanındaki "ul" ifadesi nedir? ne anlama geliyor. teşekkürler.
Başlık: Ynt: c18 tanımlama ne anlama geliyor
Gönderen: JKramer - 07 Aralık 2011, 09:19:07
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.
Başlık: Ynt: c18 tanımlama ne anlama geliyor
Gönderen: fryrmnd - 07 Aralık 2011, 10:07:13
teşekkür ederim. :o
Başlık: Ynt: c18 tanımlama ne anlama geliyor
Gönderen: fryrmnd - 07 Aralık 2011, 10:23:13
#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.
Başlık: Ynt: c18 tanımlama ne anlama geliyor
Gönderen: vsalma - 07 Aralık 2011, 10:33:45
o parantez main() metodunun parantezi gibi duruyor.

main()

{
}
Başlık: Ynt: c18 tanımlama ne anlama geliyor
Gönderen: 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
.
.
.     
Başlık: Ynt: c18 tanımlama ne anlama geliyor
Gönderen: RcALTIN - 07 Aralık 2011, 15:27:05
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.
Başlık: Ynt: c18 tanımlama ne anlama geliyor
Gönderen: fryrmnd - 07 Aralık 2011, 15:39:41
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.
Başlık: Ynt: c18 tanımlama ne anlama geliyor
Gönderen: fryrmnd - 07 Aralık 2011, 17:09:02
ş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. :(