Hallo zusammen, ich habe eine Frage und zwar was der Unterschied wenn ich in C #define Valiable 5 und int variable =5; schriebe ? danke
Gast
#6049528
Mit #define ersetzt der Compiler den Wert den du definiert hast. z.B.: [c] #define x 42 printf(x); [c] Mit einer Variable bleibt der Wert in der Variable stehen und diese wird ausgeben. [c] int x = 42; printf(x); [c] Eine Variable kannst du verändern eine Definition (#define) kann man nicht verändern.
Gast
#6049541
#define definiert Textersetzungen. Eine int Variable belegt hingegen irgendwo zwei oder vier Bytes Speicher - je nach CPU.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
Gast
#6049550
Genau genommen kennt der Compiler keine defines. Er kennt nur int var=5 und legt eine Variable var an. Das define macht der präprozessor vorher eigenständig.
Gast
#6049560
Mit defines kann man total bescheuerte Sachen machen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Gast
#6049562
Stefan F. schrieb: > Mit defines kann man total bescheuerte Sachen machen: Ja. oder sowas:
1 | |
2 | |
3 | |
4 | |
5 | |
Gast
#6049564
Matthias L. schrieb: > Ja. oder sowas Oha, bloß nicht nachmachen!
Matthias L. schrieb: > Stefan F. schrieb: >> Mit defines kann man total bescheuerte Sachen machen: > > Ja. oder sowas: > #define 1 0 > #define 0 1 Na das nicht ganz. Es muss schon ein Identifier sein, den man definiert. Also
1 | |
2 | |
Aber das ginge auch mit einer Variablen. > #define TRUE 0 > #define FALSE 1 Das würde gehen, wäre aber ebenfalls mit einer Variablen genauso möglich.
Gast
#6049689
#define Stromausfall false
while(not Stromausfall)
{
// tuwas();
}
Arduino Fanboy D. schrieb: > #define Stromausfall false > > while(not Stromausfall) > { > // tuwas(); > } Da fehlt:
1 | |
2 | |
Danke euch.
noch eine weiter Frage, gibt es einen Unterschied zwischen
void xx(void){
}
und void xx (){
}
Gast
#6050195
Mark S. schrieb: > Danke euch. > > noch eine weiter Frage, gibt es einen Unterschied zwischen > > void xx(void){ > > } > > und void xx (){ > > } Ja, das steht in deinem C oder C++ Buch.
Gast
#6050198
"und" ist ordinär kein Schlüsselwort und ich hoffe WS zählst Du nicht mit.
danke nochmal. Ich habe das gefunden
Stefan F. schrieb: > was Wo ist das "was" definiert?
Gast
#6050219
Hugo H. schrieb: > Stefan F. schrieb: >> was > > Wo ist das "was" definiert? "was" ist hier nur ein Platzhalter für die Variable |a|, diese wird innerhalb der FOR-Schleife deklariert und hat auch nur dort seine Sichtbarkeit.
Gast
#6050220
Die Frage bezog sich auf die Zeile 8 und die Variable |a| steht in Zeile 5.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Karl M. schrieb: > "was" ist hier nur ein Platzhalter für die Variable |a|, diese wird > innerhalb der FOR-Schleife deklariert und hat auch nur dort seine > Sichtbarkeit. Das ist mir klar - nur wo steht, das was = a sein soll? Also
1 | |
vermisse ich.
Gast
#6050226
Hugo H. schrieb: > wo steht, das was = a sein soll?
1 | |
2 | |
In diesem Fall passiert etwas mehr, als nur dumme Textersetzung. "was" ist Platzhalter für ein Argument. https://gcc.gnu.org/onlinedocs/cpp/Macro-Arguments.html
Hugo H. schrieb: > Das ist mir klar - nur wo steht, das was = a sein soll? Hier: Karl M. schrieb: > zeige(a)
Na, dann wäre
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
für mich aber sinnvoller gewesen %-|
Gast
#6050253
Hugo H. schrieb: > hauptprogramm > anfang > von 1 bis 100 tue > zeige_zahl > ende > für mich aber sinnvoller gewesen %-| Mag ja sein, und das wäre für sich alleine auch ok. Nur hier ist der gesamte Code als Beispiel für Defines mit Makrofunktionalität zu sehen und somit abgeschlossen.
Karl M. schrieb: > Nur hier ist der gesamte Code als Beispiel für Defines mit > Makrofunktionalität zu sehen und somit abgeschlossen. Und aus meiner Sicht unlogisch - ich verstecke eine Variable doch nicht in 3 Defines und gebe sie dann als Argument völlig zusammenhanglos aus.
Gast
#6050293
Hugo H. schrieb: > Na, dann wäre...für mich aber sinnvoller gewesen Hugo H. schrieb: > Und aus meiner Sicht unlogisch - ich verstecke eine Variable doch nicht > in 3 Defines und gebe sie dann als Argument völlig zusammenhanglos aus. Ja. Aber genau das habe ich irgendwo im Arduino Umfeld schon einmal gesehen. Ich habe das Beispiel mit Absicht so geschrieben, weil es unter anderem diesen Sch**** offenbaren sollte.
Gast
#6050323
Stefan F. schrieb: > Aber genau das habe ich irgendwo im Arduino Umfeld schon einmal > gesehen. Da isser wieder... Der Heckenschütze...
Gast
#6050327
Arduino Fanboy D. schrieb: > Da isser wieder... > Der Heckenschütze... Mein Fanboy, was würde ich bloß ohne dich machen? (Meine Schwester ärgern wäre eine Option)
Gast
#6050422
Stefan F. schrieb: > was würde ich bloß ohne dich machen? Weiter, völlig unreflektiert, mit Schaiße werfen. Jetzt hast du die Gelegenheit dein Verhalten zu analysieren und danach absichtlich weiter mit Schaiße zu werfen.
Gast
#6050437
Arduino Fanboy D. schrieb: > mit Schaiße zu werfen Ja gib's mir. ooooh ich will mehr davon. Bitte auch Natursekt. Nach einer anstrengenden Woche braucht man das.
Gast
#6050446
Auch wenn dir das etwas seltsam erscheint,... Ich bin nicht für deine Woche verantwortlich, aber du für dein Verhalten. Und gerne, wenn deine Selbstkontrolle wieder versagt, dann gibts von mir auch ein Sprüchlein dazu.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.