Vordefinierte Makros QT Augenmerk auf das QT Makro "Q_OS_WIN"

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
herby1990
Beiträge: 1
Registriert: 17. April 2017 10:24

Vordefinierte Makros QT Augenmerk auf das QT Makro "Q_OS_WIN"

Beitrag von herby1990 » 17. April 2017 10:53

Hallo zusammen,

Ich dachte ich erstell mal ein Thema darüber, vielleicht hilft es anderen Leuten auch weiter.

Es geht mir momentan um das "Q_OS_WIN" QT Makro, was ein vordefiniertes Makro ist.
Dieses Makro ist definiert, wenn man auf einem Windows Betriebsystem compiliert.
Siehe auch QT Dokumentation: http://doc.qt.io/qt-5/qtglobal.html#Q_OS_WIN

Jetzt zu meiner Allgemeinen Frage:

1. Wie kann ich auf einem Betriebsystem prüfen, ob ein solches Makro auch wirklich definiert wurde?

2. Ist es möglich die ersetzten Codeteile nach dem der Präprozessor seine Arbeit gemacht hat anzusehen?

veeman
Beiträge: 267
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: Vordefinierte Makros QT Augenmerk auf das QT Makro "Q_OS_WIN"

Beitrag von veeman » 17. April 2017 20:17

1. Was genau meinst du? - Einfach per Präprocessordirektife abfragen ob das Macro definiert wurde: #ifdef .. #endif
2. Moderne IDEs zeigen den Inhalt beim Darüberzeigen an. Eine andere Möglichkeit wäre es diese in ein String zu konvertieren und dann in der Anwendung auszugeben.
mfg veeman

mage-dev

hilefoks
Beiträge: 141
Registriert: 13. März 2008 17:09

Re: Vordefinierte Makros QT Augenmerk auf das QT Makro "Q_OS_WIN"

Beitrag von hilefoks » 13. November 2017 17:27

herby1990 hat geschrieben:1. Wie kann ich auf einem Betriebsystem prüfen, ob ein solches Makro auch wirklich definiert wurde?

Code: Alles auswählen

#ifdef Q_OS_WIN
	// do windows only stuff here
#endif 
herby1990 hat geschrieben:2. Ist es möglich die ersetzten Codeteile nach dem der Präprozessor seine Arbeit gemacht hat anzusehen?
Ja, gcc z.B. kennt die Option -E. Also z.B.

Code: Alles auswählen

g++ -E <file>.cpp
-E Stop after the preprocessing stage; do not run the compiler proper. The output is in the form of preprocessed source code, which is sent to the standard output.

Antworten