Wie schreibe ich eine „Dummy“-Zeile (nichts tun) in C?
Lesezeit: 4 Minuten
Gibt es eine spezielle Möglichkeit, eine Dummy-Zeile in C zu schreiben? (eine Art, wie pass in Python) Wenn Sie sich fragen, warum ich nicht einfach eine Leerzeile lasse, brauche ich etwas, an das ich einen Xcode-Haltepunkt anhängen kann – wenn dort nichts ist, springt der Haltepunkt zur nächsten Zeile!! Bisher habe ich es verwendet sleep(0) für diesen Zweck. Ich habe mich gefragt, ob es einen besseren/effizienteren/offizielleren Weg gibt, dies zu erreichen.
Oh, und ich verwende Objective-C. Wenn also in Obj-C etwas hinzugefügt wurde, das diesem Zweck entspricht, können Sie es gerne hinzufügen.
Das ist die ac#-Anweisung …
– ElGavilan
8. März 2014 um 2:46
Warum müssen Sie überhaupt einen Xcode-Haltepunkt in einer leeren Zeile erstellen?
– Eliza Wilson
8. März 2014 um 2:46
Enrico Susatyo
Setzen Sie ein Semikolon. Es funktioniert in C und Obj-C (sowie Java, Swift und vielen anderen Sprachen).
;
Ich dachte, das würde funktionieren, aber das Setzen eines Haltepunkts in dieser Zeile führt dazu, dass XCode in der nächsten Zeile stoppt.
– Merlevede
8. März 2014 um 3:02
sleep(0) funktioniert, ebenso wie eine Null-Anweisung (nur ein Semikolon). ; in einer einzelnen Zeile) und die Anweisung i+1;
Die Compileroptimierung führt normalerweise dazu, dass für diese Anweisungen kein Maschinencode generiert wird.
sleep(0) erfordert ein #include und dieses #include ist betriebssystemabhängig, oder? Der ; Lösung klingt besser
– Warum was
12. Juni 2022 um 20:50 Uhr
Fügen Sie eine triviale Aufgabe hinzu
var = var;
Das ist nicht ganz trivial.
– nhgrif
11. März 2014 um 0:18
Ich verstehe das Schlüsselwort nicht var in C.
– Warum was
12. Juni 2022 um 20:51
@WhyWhat sie verwenden es nur als Beispiel, ersetzen Sie eine beliebige Variable in Ihrem Programm
– Patronik
12. Okt. 2022 um 4:12
felixphew
Die meisten der bereits geposteten Antworten erfüllen Ihre Wünsche. Wenn Sie jedoch einen Block benötigen, versuchen Sie es mit einer Klammer:
{}
Und wenn Sie eine tatsächliche Anweisung benötigen, die eigentlich nichts tut und dennoch die Kompilierung übersteht, dann kann eine kleine Inline-Assembly den Zweck erfüllen:
Setzen Sie den Haltepunkt einfach in die erste Zeile, die nicht ausgeführt werden soll. Der Haltepunkt stoppt die Ausführung, bevor der Code in dieser Zeile ausgeführt wird.
Ohne eine „falsche“ Zeile zu erstellen:
someMethod();
// empty line
BREAKPOINT
someOtherMethod();
Mit der Erstellung einer „falschen“ Zeile:
someMethod();
BREAKPOINT
;
someOtherMethod();
Beides führt zum exakt gleichen Ergebnis. Der Haltepunkt stoppt an derselben Stelle.
Das ist das Problem – der Code legt eine Variable auf einen bestimmten Typ fest, damit ich sie im Debugger sehen kann, aber in der nächsten Zeile fällt sie aus dem Gültigkeitsbereich – wie es sollte, ich habe sie nur zum Debuggen drin.
– PopKernel
8. März 2014 um 2:48
@PopKernel Liegt das daran, dass Sie für Ihre if/loop keine geschweiften Klammern verwendet haben? Sie können den Haltepunkt auf der schließenden Klammer festlegen.
– Enrico Susatyo
8. März 2014 um 2:49
Verschieben Sie dann den Haltepunkt eine Zeile nach oben. Wenn Sie schrittweise vorgehen, wird eine Zeile angezeigt, nachdem die Variable festgelegt wurde und bevor sie den Gültigkeitsbereich verlässt.
– nhgrif
8. März 2014 um 2:50
Piotr Siupa
Die gute alte (void)0 Sollte es tun.
(void)0;
(void) weist den Compiler an, die folgende Zahl einfach zu ignorieren 0.
Das ist das Problem – der Code legt eine Variable auf einen bestimmten Typ fest, damit ich sie im Debugger sehen kann, aber in der nächsten Zeile fällt sie aus dem Gültigkeitsbereich – wie es sollte, ich habe sie nur zum Debuggen drin.
– PopKernel
8. März 2014 um 2:48
@PopKernel Liegt das daran, dass Sie für Ihre if/loop keine geschweiften Klammern verwendet haben? Sie können den Haltepunkt auf der schließenden Klammer festlegen.
– Enrico Susatyo
8. März 2014 um 2:49
Verschieben Sie dann den Haltepunkt eine Zeile nach oben. Wenn Sie schrittweise vorgehen, wird eine Zeile angezeigt, nachdem die Variable festgelegt wurde und bevor sie den Gültigkeitsbereich verlässt.
– nhgrif
8. März 2014 um 2:50
qulinxao
Platzieren Sie einfach diese Konstante:
0xDEBAF;
Bitte erläutern Sie Ihre Antwort. Jetzt ist es nicht sehr hilfreich.
– Stefan
30. April 2021 um 6:53
Stefan ist nur eine Ausdruckszahl im Hexadezimalformat mit der Ansicht als normales englisches Wort wie 0xdeadbeef en.wikipedia.org/wiki/Hexspeak
– qulinxao
1. Mai 2021 um 12:39 Uhr
14529400cookie-checkWie schreibe ich eine „Dummy“-Zeile (nichts tun) in C?yes
Das ist die ac#-Anweisung …
– ElGavilan
8. März 2014 um 2:46
Warum müssen Sie überhaupt einen Xcode-Haltepunkt in einer leeren Zeile erstellen?
– Eliza Wilson
8. März 2014 um 2:46