ERROR: Macro USBINIT? not found in macro file. ?

Başlatan ibo1973, 04 Ocak 2008, 09:53:03

ibo1973

ERROR: Macro USBINIT? not found in macro file.  microcode studio bu hatayı neden veriyor bilen varmı acaba ? :D benimkide soru yahu kesin bilen vardırda cevap vericek olan varmı acaba ?  :d

F493

Alıntı yapılan: "ibo1973"ERROR: Macro USBINIT? not found in macro file.  microcode studio bu hatayı neden veriyor bilen varmı acaba ? :D benimkide soru yahu kesin bilen vardırda cevap vericek olan varmı acaba ?  :d

ben c kullanıyorum ancak ,size şu şekilde cevap verebilirim..

öncelikle makro NEDİR ?

makro:  program içerisinde sembolik sabit şeklinde tanımlanan kalıplardır ,genelde çok kullanılan fonksiyonlar makro olarak yazılır...CİDDİ ANLAMDA AVANTAJIDA VAR TABİKİ...

ör /: #define HESAPLA() ;     (x*y*3,14) / (1200);

yukarıdaki bir makrodur...
         tabiki çok geniş bir konu ayrıntıları var ,ancak temelde makro budur..
ERROR: Macro USBINIT? not found in macro file.    

muhtemelen USBINIT  adında bir makro tanımlanmış( yukarıda oldugu gibi ) ve programın içerisinde biryerde çagırılıyor..
Ancak bu dosya ortada yok veya makro ile program içerisinde çagırılan isimler arasında farklılık var
     
                   ör kod üzerinde oynarken yanlışlıkla USBINI  (T) silinmiştir .. bu olasılık olabilir ,bunu kontrol edin ,veya program dosyalarına dahil edilmemiştir ,ör/ e:usbçalışma/usb   dosyasının içinde usb makrosu olmayabilir..

    siz bu isimle tanımlanmış kod parçalarını bir arayın bişeyler çıkıcaktır..

makrolar ,fonksiyon(prosedür,altprogram) olarakta yazılabilir..

ancak arasındaki fark ;siz fonksiyon yazarsanız ,program yukarıdan aşagıya dogru işleyecegi için  fonksiyon çagırıldıgını görünce ,o foknsiyonun oldugu bölgeye gider,işi bitince geti döner ve kaldıgı yerden devam eder..

 makro olarak yazılırsa program o satıra gelince hiçir yere gitmez çünkü ,define ile yapılan önişlemci tanımlamasında
 #define HESAPLA();       (x*y*3,14) / (1200);

HESAPLA(); ile karşılaşınca text yer degiştirme olur ,yani  bu derleme zamanına ilişkin bir işlemdir .siz kodu yazdınız ve derlediniz ,işte derledikten sonra aslında sizin HESAPLA();  yazdıgınız yere  
   
                        (x*y*3,14) / (1200); bu yazılacaktır..(bu işi derleyiciler hallediyor)

peki.. neden fonksiyon değilde makro dedim..


/////////////////////fonksiyon için //////////////////////////////
derleciler kodu potimize (en iyileme ,işe yaramayanları derlememe,kodu daha verimli hale getirme) ederken ykarıdan aşagı dogru  bblok optimizasyon yaparlar nedemek yani şimdi blok optimizasyon dediniz..

ör/      movlw 20
         sublw 5
       .....
        ...
       goto x    

şimdi yukarıdaki kod parçasını derleyiciler ykarıdan aşagı dogru optimize eder    movlw 20 den başlar kod bitene kadar...

ancak arada goto x oldugu için derleyici başka bir adres alanına gidecek ve bu satırdaki optimizasyon bitecek ,yani blok bitti goto yu gördügü an sayfa degişmiş gibi oldu ..

ve kısım kısım optimizasyon yapmış oldu..

//////makro için/////////////////

makroda ise az önce dedigim gibi  derleme zamanında text yer degiştirme oldugu için   kod yukarıdan  aşagı dogru işlenirken  fonksiyonla değil ,fonsiyonmuş gibi görünen aslında tamamen oraya yazılmış kod parçasıyla işlem yapar işte buda FULL OPTİMİZASYON dur ..

çünkü derleyiciler o alanı bir bütün olarak ele alacaklardır.ve o alanı tek hamlede optimize edeceklerdir ..

 buda daha iyileştirilmiş kod demektir...

iyi çalışmalar..

ibo1973

cevabın için çok teşşekür ederim dediklerini araştırıcam hatanın neden kaynaklandığını anladım sanırım bunu raştırıcan verdiğin bilgiler ışığında . ayrıca verdiğin cevap sanırım başka kişilerinde işine yarıyıcaktır ne googlede nede başka bir alanda bu konuda hiç bir şey bulmamamıştım baya bi araştırmıştım son çare buraya yazmıştım sanırım sorun pbp dirictorunun içinde olması gereken ama bende olmayan bir kaç dosyadan kaynaklanıyor bakınca sonucu buraya yazıcam tekrardan çok çok teşşekkür ederim.