Cómo escribir una línea “ficticia” (no hacer nada) en C

4 minutos de lectura

¿Hay una forma dedicada de escribir una línea ficticia en C? (algo así como pass en Python) Si se pregunta por qué no dejo una línea en blanco, necesito algo a lo que pueda adjuntar un punto de interrupción de Xcode: ¡si no hay nada allí, el punto de interrupción saltará a la siguiente línea! Hasta ahora he estado usando sleep(0) para este propósito. Me preguntaba si había una forma mejor/más eficiente/más oficial de lograr esto.

Ah, y estoy usando Objective-C, así que si hay algo que se agregó en Obj-C que se ajuste a este propósito, siéntase libre de incluirlo.

  • esa es la declaración ac#…

    – El Gavilán

    8 de marzo de 2014 a las 2:46

  • ¿Por qué necesita hacer un punto de interrupción de Xcode en una línea vacía?

    – Eliza Wilson

    8 de marzo de 2014 a las 2:46

Avatar de usuario de Enrico Susatyo
Enrico Susatyo

Pon un punto y coma. Funciona en C y Obj-C (y Java, Swift y muchos otros lenguajes).

;

  • Pensé que esto funcionaría, pero poner un punto de interrupción en esta línea hace que XCode se detenga en la siguiente línea.

    – Merlevede

    8 de marzo de 2014 a las 3:02

sleep(0) funciona, también lo hace una declaración nula (solo un punto y coma ; en una sola línea) y la instrucción i+1;

La optimización del compilador generalmente dará como resultado que no se genere ningún código de máquina para estas declaraciones.

  • sleep(0) requiere un #include y ese #include depende del sistema operativo, ¿verdad? El ; solución suena mejor

    – Por qué Qué

    12/06/2022 a las 20:50

Añadir una tarea trivial

var = var;

  • Esto no es completamente trivial.

    – nhgrif

    11 de marzo de 2014 a las 0:18

  • no entiendo la palabra clave var Cª.

    – Por qué Qué

    12/06/2022 a las 20:51

  • @Por qué lo están usando como ejemplo, sustituya cualquier variable en su programa

    – Patrónica

    12 de octubre de 2022 a las 4:12

avatar de usuario de felixphew
felixuf

La mayoría de las respuestas ya publicadas harán lo que quieras, pero si necesitas un bloque, prueba con un par de llaves:

{}

Y, si necesita una declaración real que en realidad no hace nada y, sin embargo, sobrevivirá a la compilación, entonces un pequeño ensamblaje en línea puede ser el truco:

asm("nop");

Técnicamente, esto no es portátil; pero el nop la instrucción existe básicamente cualquier conjunto de instrucciones que desee nombrar. ¡También garantizado* para no ser compilado!

Simplemente coloque el punto de interrupción en la primera línea que no desea que se ejecute. El punto de interrupción detiene la ejecución antes de que se ejecute el código en esa línea.


Sin crear una línea “falsa”:

    someMethod();
    // empty line
BREAKPOINT
    someOtherMethod();

Con la creación de una línea “falsa”:

    someMethod();
BREAKPOINT
    ;
    someOtherMethod();

Ambos dan como resultado exactamente el mismo resultado. El punto de interrupción se detiene en el mismo lugar.

  • Ese es el problema: el código establece una variable en un tipo determinado para que pueda verla en el depurador, pero en la siguiente línea queda fuera del alcance, como debería, solo tengo eso allí para la depuración.

    – Pop Kernel

    8 de marzo de 2014 a las 2:48


  • @PopKernel ¿Es porque no usaste llaves para tu ciclo if/loop? Puede establecer el punto de interrupción en la llave de cierre.

    – Enrico Susatyo

    8 de marzo de 2014 a las 2:49

  • A continuación, mueva el punto de interrupción una línea hacia arriba. Si está avanzando paso a paso, habrá una línea después de que se establezca la variable y antes de que quede fuera del alcance.

    – nhgrif

    8 de marzo de 2014 a las 2:50

Avatar de usuario de Piotr Siupa
Piotr Siupa

el buen viejo (void)0 Deberías hacerlo.

(void)0;

(void) le dice al compilador que simplemente ignore el siguiente número 0.

  • Ese es el problema: el código establece una variable en un tipo determinado para que pueda verla en el depurador, pero en la siguiente línea queda fuera del alcance, como debería, solo tengo eso allí para la depuración.

    – Pop Kernel

    8 de marzo de 2014 a las 2:48


  • @PopKernel ¿Es porque no usaste llaves para tu ciclo if/loop? Puede establecer el punto de interrupción en la llave de cierre.

    – Enrico Susatyo

    8 de marzo de 2014 a las 2:49

  • A continuación, mueva el punto de interrupción una línea hacia arriba. Si está avanzando paso a paso, habrá una línea después de que se establezca la variable y antes de que quede fuera del alcance.

    – nhgrif

    8 de marzo de 2014 a las 2:50

avatar de usuario de qulinxao
qulinxao

solo coloca esta constante:

0xDEBAF;

  • Por favor explique su respuesta. Ahora no es muy útil.

    – Stefan

    30 de abril de 2021 a las 6:53


  • Stefan es solo un número de expresión en hexadecimal con vista como palabra normal en inglés como 0xdeadbeef en.wikipedia.org/wiki/Hexspeak

    – qulinxao

    1 de mayo de 2021 a las 12:39


¿Ha sido útil esta solución?