Frage zu #define

Im Unterforum Hardware, Betriebssysteme, Programmiersprachen - Beschreibung: Alles zu Software, Hardware, Windows, Linux, Programmiersprachen
Anfragen zu Modding, Games, Cracks, etc. unerwünscht.

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 03 7 2024  10:20:11      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Hardware, Betriebssysteme, Programmiersprachen        Hardware, Betriebssysteme, Programmiersprachen : Alles zu Software, Hardware, Windows, Linux, Programmiersprachen
Anfragen zu Modding, Games, Cracks, etc. unerwünscht.


Autor
Frage zu #define

    







BID = 688231

zwack

Stammposter

Beiträge: 326
 

  


Hallo,

jetzt nutze ich das schon so lange das ich die Basics vergessen habe,
muss eine
    #define
-Anweisung am Zeilenanfang stehen oder ist's wurst?

zwack

PS Meine Frage gilt natürlich für "C"

BID = 688237

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

 

  

Sollte wurst sein.
Iirc ist C bis auf wenige Ausnahmen (z.B. I/O-Befehle, automatisches Ende von Kommentarzeilen ) formatfrei und kennt überhaupt keine Zeilenanfänge.
Die Zeilenschaltung wird i.d.R. genau wie das Leerzeichen oder Tabulatoren einfach als "white space" behandelt.

BID = 688284

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

Nicht ganz, Präprozessoranweisungen müssen sehr wohl am Zeilenanfang stehen. Das sind genau jene, die mit einem Hash beginnen, wie dieses #define. Der C-Kompiler bekommt davon nichts mehr mit. Mit #define kann man Makros für Codeschnipsel definieren, die dann im Quelltext ersetzt werden, bevor der Kompiler an die Arbeit geht. Im PC-Bereich werden diese oft in Kombination mit #if-Anweisungen verwendet, die auf bestimmte OS-Gegebenheiten oder dem Kompiler übergebene Parameter prüft. So können notwendige kleine Unterschiede für verschiedene Plattformen in einer C-Quelltextdatei behandelt werden.

Ein einfaches "#define" hat aber meines Wissens keine tiefere Bedeutung.

_________________
Reboot oder be root, das ist hier die Frage.

BID = 688339

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Hallo

Das betrifft ja den C-Präprozessor, nicht den Compiler.

Was für diesen wichtig ist: nach der Raute (#) muss eine Anweisung in der gleichen Zeile erfolgen.

# define
ist gültig,

# define
auch

aber nicht
#
define

Es muss nicht am Zeilenanfang stehen, gehört aber zu einem ordentlich lesbaren Programm dazu!
Möchte man gerne mehrere Zeilen (der Übersicht halber) so definieren, ist der Backslash zu benutzen:

#define meinMakro \
printf("Meldung");

Ansonsten ist C wirklich formatfrei. Ich kann mich jetzt ganz spontan an keine Einschränkung erinnern, die einen zwingt, strukturiert zu schreiben.

@perl:

Zitat :

(z.B. I/O-Befehle, automatisches Ende von Kommentarzeilen

Was meinst du denn mit IO-Befehlen?
Einige Compiler "kennen" die Standard-Library und testen z.B. Formatstrings auf Plausibilität und warnen ggfs. Aber sonst kenne ich da auch keine Einschränkung.
Zudem gibts ja z.B. im ANSI-C keine Doppelrückstriche für Kommentare (die kommen aus C++ und sollte, imho, da bleiben). Demnach gibts auch für richtige C-Kommentare keine diesbezüglichen Einschränkungen.

_________________

BID = 688349

Kleinspannung

Urgestein



Beiträge: 13350
Wohnort: Tal der Ahnungslosen


Zitat :
DonComi hat am  5 Mai 2010 23:47 geschrieben :

und testen z.B. Formatstrings


Offtopic :

Meinst du mit Formatstring sowas hier?


_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)

BID = 688359

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
Was meinst du denn mit IO-Befehlen?
Einige Compiler "kennen" die Standard-Library und testen z.B. Formatstrings auf Plausibilität und warnen ggfs.
Ja, das war von mir nicht zuende gedacht.
Wenn man in sovielen Programmiersprachen dilettiert hat wie ich, vergisst man schonmal, dass die diversen read, write, getchar, putchar etc. nicht Bestandteil der Sprache, sondern der stdio sind.
Ausser + und - gibt es ja auch tatsächlich ein paar reservierte Worte in dieser Sprache.
Ich habe früher für Geld einige Filter geschrieben, meist für Terminal und Druckeranpassungen und auch Fernschreibleitungen. Dazu dann noch die Programmierung der seriellen Schnittstellen mit ihren Tücken. Selbst wenn das dann mal lief, konnte man sich nie ganz sicher sein, ob nicht irgendwann doch irgendeine Treibmine meinte nun sei es an der Zeit die Zeile zu beenden, oder wahlweise einen unbemerkten Pufferüberlauf zu produzieren. Testen, testen, testen ...
Deshalb schreibe ich für µC ganz gerne in Assembler, da weiss man was man hat.
Falls Gleitkommarechnung nötig ist, stehle ich die natürlich einem Compiler. Ich habe sogar mal einem Postscriptdrucker beigebracht sich die nötigen Gleitkommaberechnungen selbst zu machen. Der kann das nämlich und ich konnte das nicht.




Zitat :
Zudem gibts ja z.B. im ANSI-C keine Doppelrückstriche für Kommentare (die kommen aus C++ und sollte, imho, da bleiben
Du meinst wohl den doppelten Schrägstrich. Der doppelte Backslash dient als Escape für den Backslash selbst.
Mag sein, dass der // als Kommentarzeichen bis zum Zeilenende aus C++ stammt, aber 1988 haben wir ihn schon benutzt und, soweit ich mich erinnere, redete zumindest hierzulande noch niemand von C++. Mag auch sein, dass das eine Spezialität des Borland Compilers war; ich habe das nur als syntactic sugaring empfunden.

BID = 688483

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Hehe, @perl:
Ja, war natürlich der Doppelschrägstrich (das kommt davon, wenn man zu lange in der Uni sitzt )

Aber hast Recht, es gibt für C ja nicht nur einen Standard und zumindest nach dem Ansi-C gibt es diese Art des Kommentars in C nicht.
Aber was ist schon "reines" C?

Ich kenne keine Umgebungen, wo nicht mächtig rumgetrickst wird. Von den ekligsten Präprozessorverrenkungen über direkte Eingriffe in die entsprechenden Backends der Compiler...

Trotzdem ist C meine Lieblingssprache, wobei ich auch gern direkt in Assembler schreibe.



_________________


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 16 Beiträge im Durchschnitt pro Tag       heute wurden bisher 6 Beiträge verfasst
© x sparkkelsputz        Besucher : 181599673   Heute : 1227    Gestern : 5493    Online : 529        3.7.2024    10:20
3 Besucher in den letzten 60 Sekunden        alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0225348472595