Aloitin tässä eilen väsäämään CoolBasicille pientä uutta esikäsittelijää. Toteutuskieleksi en tosin tällä kertaa valinnutkaan CB:tä, kuten
Ensimmäisessä tekosessani vaan C++:n.
Pohjana käytin Sami345:n kasaamaa
CBDebugger-pakettia, ja koodasin siihen uuden Debug.exen. Se ei sinällään ole yhteensopiva alkuperäisen kanssa, sillä komennot ovat eri nimisiä. C:n esikäsittelijää käyttäneelle seuraava koodinpätkä saattaa näyttää mukavan tutulta:
Code: Select all
//define lauseita ei kannata vielä kommentoida, sillä kommentti lasketaan mukaan makron määrittelyyn
#Define _DEBUG 'kommentoi jos et halua debugata
#ifdef _DEBUG 'jos _DEBUG on määritelty
#define Debug
#Else
'muuttaa Debug-sanan kommenteiksi
#define Debug //
#EndIf
Debug Print "Tulostuu vain virheitä etsittäessä"
#ifndef _DEBUG
Print "Tulostuu vain kun virheitä ei etsitä"
#ifndef foo 'demonstroi sisäkkäisiä if lauseita
Print "Tulostuu myös kun _DEBUG ei ole päällä"
#endif
#else
Print "Tulostuu myöskin vain virheitä etsittäessä"
#endif
Print "Tämä komento sijaitsee rivillä __LINE__" //__LINE__ on valmiiksi määritelty makro, joka kertoo rivinumeron
WaitKey
Tällä hetkellä esikäsittelijä siis sisältää seuraavat komennot/ominaisuudet:
- #define //Määrittelee makron
- #ifdef //Tosi jos makro on määritelty
- #ifndef //Käänteinen edelliseen
- #else
- #endif
- __LINE__ //valmiiksi määritelty makro, joka kertoo rivinumeron
- ei sotke virheilmoitusten rivinumeroita
Valitettavasti esikäsitteliä ei ainakaan vielä osaa käsitellä include tiedostoja, mutta esikäsittelijään voi tiputtaa tiedostoja (siis hiirellä raahat tiedoston esikäsittelijän kuvakkeen päälle), jolloin se käsittelee ne.
Vielä semmoinen varoituksen sanainen, että raahausoperaatio käsittelee alkuperäistä tiedostoa, joten muista varmuuskopioida koodisi. Editorin kanssa käytettäessä vaaraa ei pitäisi olla.
Laitan tämän ainakin toistaiseksi tänne offtopic-ketjuun. Sitten kun jaksan tehdä tästä julkaisukelpoisemman paketin, niin saatan tämän projekteihin laittaa.
Jos joku jaksaisi tätä testailla ja kertoa mahdollisista bugeista (niitä varmasti on, koska se ei ole läheskään täysin testattu), niin olisin kiitollinen.
Liitteenä oleva Debug.exe siis korvaa CBDebuggerin oman Debug.exen CoolBasicin IDE-kansiossa.
Tiedän, että se ei CBDebuggerin tarjoamia StartDebug-, StopDebug-komentoja, mutta ehkä sellaisetkin olen tähän lisäämässä.
Olen avoin myös ehdotuksille ja ideoille tätä koskien.