• Keine Ergebnisse gefunden

• werden vom C-Preprocessor, sind eine reine Textersetzung (kein C-Konstrukt)

N/A
N/A
Protected

Academic year: 2021

Aktie "• werden vom C-Preprocessor, sind eine reine Textersetzung (kein C-Konstrukt)"

Copied!
5
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Makros

• Eigenschaften

• werden vom C-Preprocessor, sind eine reine Textersetzung (kein C-Konstrukt)

• werden mit #define angelegt und mit #undef gelöscht

• Arten (das ist hier eine künstliche Unterscheidung)

• Existenzmakros: haben keinen Ersetzungstext

• #define NUR_ZUM_TEST

• zur bedingten Kompilierung (#ifdef, …)

• ohne Parameter: werden immer mit demselben Text ersetzt

• #define ANZAHL_MESSWERTE 1000

• meist für zentrale Definition einer Konstante (Konsistenz im Quelltext)

• mit Parameter: Parameter in () werden je nach Aufruf ersetzt

(2)

Bedingte Kompilierung

• Ausschluss oder Einschluss von Quelltext

• wird vom C-Preprocessor verarbeitet

• Folge: Bedingungen werden beim Kompilieren verarbeitet

• Bedingungsabfragen mit

• #ifdef/#ifndef oder #if

• #elseif oder #elif

• #else

• #end

• Bei Verwendung von #if:

• Existenzabfragen mit defined() bzw. not defined()

(3)

Integerbaukasten

• Neue Formatangaben für die printf/scanf-Familie

• Bisheriger Formatangabe (z.B. d) wird ersetzt durch ein Makro

• #include <inttypes.h>

• Regeln zum Ersetzen einer bisherigen Formatangabe, z.B. d

• Stelle bei printf ein PRI voran -> PRId

• Stelle bei scanf ein SCN voran -> SCNd

• Hänge die Längenangabe (Bitanzahl) hinten an -> d16

• Das Makro muss im Quelltext außerhalb der Anführungszeichen stehen

• Beispiele für int16_t x; uint8_t y;

• printf("x=%d, y=%u.",x,y); -> printf("x=%"PRId16",y=%"PRIu8".",x,y);

• scanf ("%d", &x); -> scanf ("%"SCNd16"", &x);

(4)

Datentypen bool, enum

• bool (eigentlich _Bool)

• Garantierte Werte false und true (als 0 und 1)

• Minimaler Speicherverbrauch (meist uint8_t)

• in stdbool.h deklariert

• enum

• „Verkleidung“ für einen Integer

• automatisch: Disjunkte (nicht überlappende) Zuweisung Symbol zu Wert

• manuell: Übersteuerung (dann auch gleiche Werte) möglich

• In C keine Trennung der Namensbereiche (in C++ schon)

(5)

typedef

• In C (leider) etwas zahnlos, kaum mehr als eine textuelle Ersetzung

• Gründe zur Nutzung:

• Oft und gerne in Herstellerbibliotheken benutzt

• Erleichtert die Wiederverwendung auch in eigenen Programmen

• Bei der Deklaration sog. Funktionszeiger fast unverzichtbar

• Syntax

• typedef bekannte typen neuer_typ;

• neuer_typ endet gerne auf _t oder _T (zur schnellen Erkennung)

Referenzen

ÄHNLICHE DOKUMENTE

und den igten Aug. cn nett dieses hat Ew. Majestät siegreiche Armee/ unter dem Beystande des Allerhöchsten und durch das Glück Ew. über die Preußische Armee, welche der

Hinsichtlich der Programme „gotv“ und „Ländle TV“ kommt es zu keiner Änderung der Programminhalte, sondern zu einer technisch angepassten Verbreitung über den

[r]

[r]

Gemäß § 12 AMD-G hat die Zuordnung der drahtlosen Übertragungskapazitäten nach Frequenz und Standort an Multiplex-Betreiber unter Berücksichtigung der

genannten Übertragungskapazität um eine mit dem GE06 Abkommen nichtkonforme Übertragungskapazität handelt und ein Koordinierungsverfahren durchzuführen ist, konnte

3 AMD-G werden fernmelderechtliche Bewilligungen (im Wesentlichen Frequenzzuteilungen nach § 54 TKG 2003 und Funkanlagenbewilligungen nach § 74 TKG 2003) dem

genannten Übertragungskapazität hat die Vorkoordinierung ergeben, dass von einer hohen Koordinierungswahrscheinlichkeit auszugehen ist, weshalb aus technischer Sicht