typedef unsigned long uint32;
typedef unsigned long long uint64;
Esimerkkejä siitä, mitä syntyisi, jos allaolevan makron saisi määriteltyä oikein:
uint64 dv64_3(uint64 arg) {
dv64s(3);
uint64 r = arg / 3;
dv64e(3);
return r;
}
http://keskustelu.suomi24.fi/tiede-ja-teknologia/tietotekniikka/naytot-ja-naytonohjaimetuint64 dv64_5(uint64 arg) {
dv64s(5);
uint64 r = arg / 5;
dv64e(5);
return r;
}
uint64 dv64_7(uint64 arg) {
dv64s(7);
uint64 r = arg / 7;
dv64e(7);
return r;
}
// Makromäärittely: mitä ???:n paikalle pitäisi laittaa ?
#define routine(DIVISOR) uint64 dv64_???(uint64 arg) { dv64s(DIVISOR); uint64 r = arg / DIVISOR; dv64e(DIVISOR); return r; }
// jotta allaolevat toimisivat oikein?
routine(11)
routine(13)
routine(17)
routine(19)
routine(23)
// JOS makromäärittely saadaan oikein, niin allaolevat tuottaisivat vastaavaa koodia kuin ylimmät kolme valmiiksi kirjoitettua aliohjelmaa:
routine(3)
routine(5)
routine(7)
Onnistuuko tällainen funktioiden määrittely makrojen avulla ?
funktioiden määrittely makron avulla?
C_funktionAutomKirjoitus
1
54
Vastaukset
- C-tuki
kas näin:
#define routine(DIVISOR) uint64 dv64_##DIVISOR(uint64 arg) { dv64s(DIVISOR); uint64 r = arg / DIVISOR; dv64e(DIVISOR); return r; }
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 2194167
- 1214016
- 483632
- 652983
- 2002741
- 492518
- 222518
- 202406
- 412289
Kuule rakas...
Kerrohan minulle lempivärisi niin osaan jatkaa yhtä projektia? Arvaan jo melkein kyllä toki. Olethan sinä aina niin tyyl412245