Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako da napravim makro konkatenaciju (##) baze nekog identifikatora sa brojem koji je def. makroom?

[es] :: C/C++ programiranje :: Kako da napravim makro konkatenaciju (##) baze nekog identifikatora sa brojem koji je def. makroom?

[ Pregleda: 2038 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

salec

Član broj: 6527
Poruke: 1738
*.rcub.bg.ac.yu



+25 Profil

icon Kako da napravim makro konkatenaciju (##) baze nekog identifikatora sa brojem koji je def. makroom?11.06.2004. u 10:20 - pre 241 meseci
Tj. na pr.:
Code:


#define BROJ_ONOG_REGISTRA 6

....

#define IME_REGISTRA(a)  registar##a     // identifikatori registri
#define MOJREG  IME_REGISTRA(BROJ_ONOG_REGISTRA) 


I sad, kad negde u kodu napisem na primer:
Code:

volatile char registar0, registar1, registar2, registar3, registar4, registar5, registar6;

.....

MOJREG = 0x05;


Kompajler nece videti:
Code:
registar6 = 0x05;
kako bih ja zeleo, nego:
Code:
registarBROJ_ONOG_REGISTRA = 0x05; 


Kako da forsiram izvrsenje makrozamene parametara ovog makroa koji vrsi konkatenaciju? U K&R pise da ¨prisustvo ## stiti argumente spoljasnjeg poziva od prosirenja¨. Ima li tome leka(, doskocice, resenja, workarounda)?
 
Odgovor na temu

salec

Član broj: 6527
Poruke: 1738
*.rcub.bg.ac.yu



+25 Profil

icon Re: Kako da napravim makro konkatenaciju (##) baze nekog identifikatora sa brojem koji je def. makroom?11.06.2004. u 12:59 - pre 241 meseci
Resio sam!

Otprilike ovako:
Code:


#define BROJ_ONOG_REGISTRA 6

....

#define IME_REGISTRA(a)  registar##a     // identifikatori registara
#define POMOC(a)  IME_REGISTRA(a) 
#define MOJREG  POMOC(BROJ_ONOG_REGISTRA) 



Makro POMOC sluzi samo zato da bi parametar bio razvijen pre nego sto se prosledi u IME_REGISTRA.

 
Odgovor na temu

[es] :: C/C++ programiranje :: Kako da napravim makro konkatenaciju (##) baze nekog identifikatora sa brojem koji je def. makroom?

[ Pregleda: 2038 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.