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- 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 |
|
|
|
BID = 688231
zwack Stammposter
Beiträge: 326
|
|
Hallo,
jetzt nutze ich das schon so lange das ich die Basics vergessen habe,
muss eine -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
|
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: 13360 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.
_________________
|
|
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 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 3 Beiträge verfasst © x sparkkelsputz Besucher : 182421903 Heute : 942 Gestern : 5459 Online : 270 29.11.2024 8:36 1 Besucher in den letzten 60 Sekunden alle 60.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0475580692291
|