Frage zur Makroverwendung
-
Hallo zusammen,
ich habe eine Frage zu Makros. Ist es üblich diese auch im Programmverlauf zu verwenden. Also beispielsweise
so etwas:#include <iostream> #define MIN(a,b) ((a)<(b) ? (a) : (b)) using namespace std; int main() { #undef MIN #ifdef MIN int zahl = MIN(6,4); cout << zahl; #endif #ifndef MIN cout << "Der Himmel ist blau"; #endif return 0; }Außerdem verstehe ich nicht den Sinn ein Makro ohne Ersatztext zu definieren. Laut meinem Lehrbuch kann mit dem Einsatz eines solchen Makros eine Headerdatei identifiziert werden und somit kann eine Mehrfachinkludierung vermieden werden. Diese Technik würden wohl auch in den Standard-Header-Dateien gebraucht werden.
Ich verstehe das nicht? Kann mir jemand diese "Technik" mal an einem Beispiel erörtern?
Vielen Dank
lg, freakC++
-
So, wie Makros in deinem Beispiel eingesetzt werden sollte man das nicht tun. Da nimmst du besser eine inline Funktion. Makros haben diverse Nachteile, welche aber per google gefunden werden können.
Include Guards werden hier erklärt:
http://en.wikipedia.org/wiki/Include_guard
-
#ifdef __WIN32 typedef void* NativeFileType; #else typedef int NativeFileType; #endif NativeFileType openFileForReading(char const* filename); ... int main(){ ... NativeFileType file=openFileForReading(...würde ich lieber machen als
... int main(){ ... #ifdef __WIN32 HANDLE file=openFileForReading(... #else int file=openFileForReading(... #endifAber oft sieht man das #ifdef mitten im Code wie im zweiten Beispiel. Also es ist durchaus üblich, leider.