Anfänger-Verständnisfrage zu #define

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
RaUn
Beiträge: 27
Registriert: 27.09.2010 18:04:12

Anfänger-Verständnisfrage zu #define

Beitrag von RaUn » 01.12.2010 14:44:48

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?

brummer
Beiträge: 182
Registriert: 19.02.2007 19:21:23

Re: Anfänger-Verständnisfrage zu #define

Beitrag von brummer » 01.12.2010 15:09:05

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.

RaUn
Beiträge: 27
Registriert: 27.09.2010 18:04:12

Re: Anfänger-Verständnisfrage zu #define

Beitrag von RaUn » 01.12.2010 16:06:41

Ah danke, also es ist nur da, damit man es mit #if defined.. abfragen kann.

Benutzeravatar
Meillo
Moderator
Beiträge: 9252
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Anfänger-Verständnisfrage zu #define

Beitrag von Meillo » 01.12.2010 18:54:07

RaUn hat geschrieben:Ah danke, also es ist nur da, damit man es mit #if defined.. abfragen kann.
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.
Use ed once in a while!

Antworten