Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

hi,

hab da mal ne frage, wozu sind präprozessoranweisungen wie z.b. #define, #elif, #ifdef, #endif usw gut?

ich weiss, dass die bei z.b. #include <iostream.h> der quelltext von der header datei eingesetzt wird.

aber für was benötige ich das andere zeug und was kann ich damit bewirken?:confused:

danke korea1

#define bewirkt ähnlich wie #include eine Textersetzung, allerdings nicht an der Stelle, an der die Präprozessordirektive selbst steht, sondern an jeder Stelle im folgenden Code, an der das definierte Symbol gefunden wird.

Beispiel

#define COMPILETIMECONSTANT 25

// ... viel später

if( q == COMPILETIMECONSTANT ) {

Hier wird, bevor der Compiler den Quellcode überhaupt zu Gesicht bekommt, der Text COMPILETIMECONSTANT durch 25 ersetzt.

Man kann bei #defines auch noch Parameter angeben, das sieht dann aus wie das Makro hier.

Die Direktiven #if #elif #else #endif bieten die Möglichkeit der bedingten Kompilierung. Der Ausdruck nach #if wird geprüft, und falls er logisch wahr (also von Null verschieden) ist, wird der nachfolgende Codeblock in die Kompilierung einbezogen, ansonsten nicht. Mit #elif kann man eine weitere Bedingung prüfen, mit #else die "restlichen" Fälle abdecken. #endif schließt einen solchen bedingten Kompilierungsblock ab.

#ifdef SYMBOL ist eine Kurzschreibweise für #if defined SYMBOL, und ist wahr, wenn irgendwo vorher im Code ein #define SYMBOL stand.

#ifndef SYMBOL ist kurz für if !defined SYMBOL, hier ist es genau andersrum.

Eine häufige Anwendung für diese Direktiven sind die sogenannten #include-Guards. Es kann kommt schon mal vor, dass Headerdateien andere Headerdateien per #include einbinden müssen. Um nun zu verhindern, dass derselbe Header-code mehrfach eingebunden wird (was bei gegenseitigen #includes zu Endlosschleifen führen kann), verwendet man für jede Headerdatei ein eindeutiges Symbol. Falls dieses Symbol am Anfang der Headerdatei noch nicht definiert ist, wird es definiert, und der Code der Datei normal behandelt. Falls es bereits definiert ist, wird der gesamte Code bis zum abschließenden #endif ignoriert:

#ifndef MY_HEADER_FILE_INCLUDED

#define MY_HEADER_FILE_INCLUDED

// ... viele Deklarationen

#endif

Die durchgängige Großschreibung der definierten Symbole ist nicht zwingend, sondern nur üblich, um sie besser erkennen zu können. Man darf übrigens keine Symbole selbst definieren, die mit einem Unterstrich beginnen oder zwei Unterstriche hintereinander enthalten. Solche Namen sind für die interne Nutzung durch den Compiler reserviert.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.