Gå til innhold

Anbefalte innlegg

#define M_blah #include <iostream>

M_blah

using namespace std;

int main()
{
return(0);
}

 

test2.cpp:3: error: invalid token

test2.cpp:3: error: expected constructor, destructor, or type conversion before '<' token

test2.cpp:3: error: expected `,' or `;' before '<' token

 

Jeg er litt rusten på dette med macroer, hva skjer? Er det "stringification" som slår inn? ( http://gcc.gnu.org/onlinedocs/cpp/Stringif...Stringification )

Når jeg kjører dette igjennom pre-processoren (cpp) og titter på resultatet (altså før ting blir sendt til kompileren), får jeg dette:

 

#include <iostream>

 

using namespace std;

 

int main()

{

return(0);

}

 

..altså det ser jo ut til å fungere, M_blah blir erstattet med #include <iostream>.

 

(Vet man normalt skal bruke template-kode fremfor macroer, men nå trenger jeg macroer. (Ja, jeg er helt sikker.))

Lenke til kommentar
Videoannonse
Annonse

Det nærmeste jeg kan få til er noe sånt:

 

#define MYHEADER <iostream>
#include MYHEADER

 

..eller den mest vanlige varianten:

 

#if defined(M_blah)
   #include <string>
#elif defined(NOHEADER)

#else
   #include "MyString.h"    
#endif

 

Tror ikke det er mulig å gjøre det som du skisserer. Kan heller ikke huske å ha sett noe lignende. Men mulig jeg tar feil. Er ikke noe macroekspert selv eller akkurat. Men jeg fant ikke noe i min dokumentasjon som var til hjelp.

Endret av kjetil7
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...