macro concat og __FUNCTION__
Jeg fik den ide, at jeg skulle bruge et id for mine funktioner, istedet for at bruge funktionen navn. Jeg er ikke længere rigtig sikker på at jeg har brug for det her til noget, men nu er det ved at gøre mig sindsyg at jeg ikke kan få det til at virke.Mit program er meget simpelt, der er 3 elementer i det:
- En enum med alle funktions id'er
- En macro der skal concat'e 'fid_' og outputtet af macroen __FUNCTION__
- Og til sidst min main, hvor jeg vil skrive id'en for main ud
enum
{
fid_main = 0
};
#define fid fid_##__FUNCTION__
/* Alternativer:
#define fid(a) fid_#a
*/
int main()
{
cout << fid << endl;
}
Jeg kan godt se, at __FUNCTION__ er en text string, og det er nok ikke helt heldigt. Men det er jo helt konstant og fast defineret, det er jo ikke som at jeg har en runtime variable string eller char array, så det skal da kunne lade sig gøre.
Er det fordi det ikka kan lade sig gøre, eller hvad gør jeg forkert?