Seite 1 von 1

(gelöst) [C++] Kommentar durch Präprozessor erzeugen, legal?

Verfasst: 28.11.2013, 15:06
von Krishty
Hi,

Ist es wohldefiniert, den Präprozessor durch Konkatenieren von /* und */ einen Kommentar erzeugen zu lassen? In diesem Beispiel:

  #define UNQUOTE3(LITERAL3) LITERAL3
  #define UNQUOTE2(LITERAL2) UNQUOTE3(/LITERAL2/)
  #define UNQUOTE(LITERAL) UNQUOTE2(*"*/"LITERAL"/*"*)
  UNQUOTE("foo")


wird aus

  "foo"

zwei Strings um den Bezeichner

  ""foo""

(Strings unterstrichen). Ich kann das wirklich gut gebrauchen, bin aber um die Portabilität besorgt :?

Gruß

Re: [C++] Kommentar durch Präprozessor erzeugen, legal?

Verfasst: 28.11.2013, 16:35
von Artificial Mind
Hi,

ich bin mir ziemlich sicher, dass das nicht ok ist.

Zuerst kommt Tokenizen, danach sind Kommentare bereits durch whitespace-chars ersetzt.
Später kommt der Präprozessor, da gibt es gar keine Kommentare mehr.

Jedenfalls habe ich das so gelernt als ich im Rahmen von cppgm die ersten Schritte implementiert habe ;)

Cheers,
Mind

Re: [C++] Kommentar durch Präprozessor erzeugen, legal?

Verfasst: 28.11.2013, 16:39
von B.G.Michi
siehe auch hier

Re: [C++] Kommentar durch Präprozessor erzeugen, legal?

Verfasst: 29.11.2013, 07:14
von Krishty
Mal wieder typisch, dass Microsoft die Regeln laut wiederholt und dann offensichtlich bricht :-( Danke für die Hinweise!