[C++] Macro binnen class

Pagina: 1
Acties:

  • TheMrH
  • Registratie: April 2000
  • Laatst online: 01-09 22:45
Op het moment ben ik bezig iets te proteren/converteren/omschrijven van C naar C++. Gaat allemaal wel aardig, mag niet klagen. Alleen loop ik nu tegen een waarsch klein probleem: in C was een bepaalde functie als macro geimplementeerd, die dan weer een andere functie aanriep met 2 paramaeters, nl __FILE__ en __LINE__.
Het gaat om een simpele debugoutput functie:
code:
1
2
3
4
5
void
CDebug::OutputLastError(DWORD dwLastError, LPSTR szPrefix)
{
    CDebug::OutputLastErrorFileLine(dwLastError, szPrefix, __FILE__, __LINE__);
}

Nu zie je natuurlijk meteen al waar het mis gaat: __LINE__ en __FILE__ zijn constanten van de compiler (oid), en geven in deze functie altijd dezelfde regel... Hoe kan ik dit zo maken dat dit niet gebeurd?
Ik heb al geprobeerd met een macro binnen de header file, maar dan geeft ie een fout op de '::'. Hoe kan ik dit wel oplossen zonder alle aanroepen te moeten/hoeven te vervangen?

The box said 'requires Windows 95 or better', so I installed Linux...


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Het zijn idd precompiler constants, en dus puur afhankelijk van de plek waar ze staan. Je moet dus gewoon een macro blijven gebruiken omdat dat de enige manier is dat de precompiler op de goede plaats kan substituten. Eventueel kun je de macro omschrijven dat ie een static functie binnen CDebug aanroept mocht je het perse in een class onder willen brengen.

Professionele website nodig?


  • TheMrH
  • Registratie: April 2000
  • Laatst online: 01-09 22:45
Het werkt nu prima, bedankt! Ik kwam er ff nie uit, had al van alles geprobeerd, maar nu werkt het. Gewoon die #define zonder de 'CDebug::' ervoor gedefinieerd |:(

The box said 'requires Windows 95 or better', so I installed Linux...