Hallo, ich arbeite gerade dieses Beispiel durch:
http://www.linuxjournal.com/article/6735?page=0,2
mich irritiert die Zeile:
#define ALSA_PCM_NEW_HW_PARAMS_API
Erstens: ich kenne define nur in der Form #define irgendwas irdendwasanderes. Hier ist nur ein Parameter - was bedeutet das?
Zweitens: Was es auch immer bedeutet - weder in der Datei asoundlib.h noch im Beispielprogramm wird diese definition verwendet - warum also diese Zeile?
Anfänger-Verständnisfrage zu #define
Re: Anfänger-Verständnisfrage zu #define
Liegt wohl am Datum, 2004, jetzt gibt es in /usr/include/alsa/pcm.h
#if !defined(ALSA_LIBRARY_BUILD) && !defined(ALSA_PCM_OLD_HW_PARAMS_API)
[ein paar deprecated Funktionen]
#endif
2004 wahr das wohl noch andersherum, da musste man ALSA_PCM_NEW_HW_PARAMS_API noch definieren um eben die neuen Funktionen nutzen zu können.
#if !defined(ALSA_LIBRARY_BUILD) && !defined(ALSA_PCM_OLD_HW_PARAMS_API)
[ein paar deprecated Funktionen]
#endif
2004 wahr das wohl noch andersherum, da musste man ALSA_PCM_NEW_HW_PARAMS_API noch definieren um eben die neuen Funktionen nutzen zu können.
Re: Anfänger-Verständnisfrage zu #define
Ah danke, also es ist nur da, damit man es mit #if defined.. abfragen kann.
Re: Anfänger-Verständnisfrage zu #define
Genau. Es wird definiert aber ohne Wert bzw. leerem Wert. Wuerde das Macro im Code auftauchen wird es durch nichts ersetzt (= entfernt). Das macht selten Sinn. Aber man kann mit #ifdef und #ifndef abfragen ob das Macro definiert ist und demnach Code einkompilieren oder ignorieren. Ein typischer Anwendungsfall dafuer sind hardwarenaher Code und Bibliotheken die evtl. nicht verfuegbar sind und damit bestimmt Funktionalitaet nicht verwendet werden kann.RaUn hat geschrieben:Ah danke, also es ist nur da, damit man es mit #if defined.. abfragen kann.
Use ed once in a while!