Mikäköhän logiikka tässäkin on, kun käytetään #definea alussa niin siihen ei laiteta mitään yhtäsuuruusmerkkiä tms. määritettävän ja määritelmän väliin tai puolipistettä perään, kuten tässä
#define TRUE 1
#define FALSE 0
...
int done = 0;
while( done != TRUE ) {
...
}
#define TRUE 1
#define FALSE 0
...
int done = 0;
while( done != TRUE ) {
...
}
Vastaukset 4
Vanhimmat
Koska #define on esikääntäjän käyttöön ja sillä tehdään makroja. Se korvaa mitä tahansa tekstiä eikä kysee ole siis samasta asiasta kuin vakioiden tekeminen tai sijoittamisesta johonkin muutttujaan.
#define ISDONE while( done != TRUE )
..toimii myös.
Googlaa esikääntäjä tai preprocessor.
Esikääntäjälle voi tehdä mm. funktiontapaisia makroja, ja 'liimata' argumentteja (##-merkeillä). Makrot on osattava, koska niihin törmää muiden koodissa ja tietysti toisinaan on järkevää/pakollista väsätä omia.
>#define TRUE 1
>#define FALSE 0
Laittaisin tuon mielummin näin:
#define FALSE 0
#define TRUE !FALSE
turvallisempi kaikissa tilanteissa. Kotitehtäväksesi jää, missä!