Id devuelto 1 estado de salida de error

He estado tratando de averiguar este error casi una hora, y estoy teniendo problemas. Estaba leyendo este post: C error de compilación: Id devuelto 1 estado de salida y alguien dijo que puede ser porque el programa todavía se está ejecutando. He comprobado que el y que no se está ejecutando y me sigue apareciendo el error.

Esto es lo que el error se ve como: C:\Program\collect2.exe [Error] ld devuelto 1 estado de salida.

Yo también he leído algunos más mensajes con respuestas como esta: Id devuelto 1 estado de salida de error en mi programa en C y la parte superior de la respuesta fue que era un «error del vinculador» y que el programa es llegar cumplido de forma incorrecta. He intentado crear un nuevo proyecto y copiar el código, pero terminan con el mismo error. Luego fui a las opciones del compilador y tomé una captura de pantalla de las opciones. ¿Estas opciones se ven bien?

Id devuelto 1 estado de salida de error

Tal vez sea sólo un error en mi código estoy con vistas. Tengo que crear una cola de recursividad función para agregar números. Por ejemplo, el usuario entra en la 4 y la función agrega 4+3+2+1 para obtener 10.

Creo que el error está en este trozo de código en el bucle while:

else{

        printf("Answer = %d \n", addNum(num));  
    }

Cuando les comente que me puede ejecutar y escriba un número negativo o cero y obtener el resultado.Si mi programa es como la función no se envían correctamente no quiero que lo correcto. Voy a ajustar las cosas que más tarde y en la figura la respuesta para mí, estoy buscando ¿por qué estoy recibiendo este error.

#include <stdio.h>
#include <stdlib.h>

int addNum(int n);
int main(int argc, char *argv[]) {

    int num;
    int count = 1;


    printf("Enter an integer greater than zero, (q to quit): \n");


    while(count < 3){

        printf("Enter a positive number: \n");
        scanf("%d", &num);

        if(num < 0){

            printf("Enter a positive number: \n");
        }
        else if(num == 0){

            printf("Answer = 0 \n");
        }
        else{

            printf("Answer = %d \n", addNum(num));  
        }


     }


    int addNum(int n){

       int answer; 

       if(n > 0){

          answer = n += addNum(n - 1);  
       }
       return answer;
    }

   return 0;
  }
  • Que addNum aplicación debe estar fuera de main().
  • No el problema, sino su while bucle no termina nunca de bucle
  • Y estoy bastante seguro de que el error es mostrado en algún lugar antes de la ld returned 1 mensaje
  • Sí, yo voy a estar agregando una clave para entrar, de forma que el bucle while se cierra cuando el usuario ingresa la clave. Como dije solo estoy usando el recuento de probar el bucle while. Y ¿qué quieres decir antes de que el ld devuelto 1 mensaje?
  • Usted puede mirar en el «Error» panel de Visual Studio? Estoy seguro de que habría algún error mostrado por el enlazador.
  • De todos modos, si usted jus mover la definición de addNum fuera como WhozCraig dijo, se debe compilar bien.
  • Ese era el problema, muchas gracias! Puede que me explique de nuevo ¿por qué funciona? De lo que yo pensaba, una función puede estar en la principal, mientras que sólo la intención de usarlo localmente, así que ¿por qué esto no funciona?
  • Sí moviendo la función fuera de los principales ayudado. Sin embargo no entiendo por qué no funcionó antes, porque yo lo estaba usando a nivel local. ¿No debería funcionar ya que lo estoy usando en la principal?
  • No existe la noción de las funciones locales en C.
  • Movimiento funcionó porque C no apoyar a las definiciones de función (es decir. funciones anidadas). Francamente, me sorprende que el código compilado. Si su compilador soporta esto a través de algunos de extensión (y están haciendo ningún favor, si lo hacen), entonces el problema se convierte en una de ubicación.
  • Oh, yo no era consciente de la C no admite las funciones locales. Gracias por informarme de que. Puede usted explicar qué quiere decir con que se sorprenden de que el código compilado? Qué quiere decir que usted se sorprenda si se cumplió cuando yo tenía la función dentro de la principal? Si es así, no se me ocurrió que podía usar las funciones locales y se que fue mi error. Sólo compilado después de que me mudé a la función de la principal.
  • Es probable que haya otros mensajes, además de la ld returned 1 exit status. Eso es sólo el enlazador diciendo «Error al enlace. Adiós». Podría ser debido a muchas razones. El principal error es probablemente en algún lugar en los otros mensajes. Algo así como undefined reference to `addNum'
  • Sí, eso es lo que quiero decir.
  • Sería mejor si usted publicar una respuesta.
  • El mensaje de error que explica el fracaso es la razón por la que me hizo la pregunta. Tengo esto: «C:\Program\collect2.exe [Error] ld devuelto 1 estado de salida». Hay alguna forma para ver más detalles acerca de este error en el medio ambiente? Yo uso Dev-C++ soy nuevo en este IDE y C en general. No estoy seguro de cómo buscar más información con respecto a los errores en el IDE. Yo realmente no han aprendido todavía.
  • WhozCraig ya me dieron la respuesta. ¿A qué te refieres?
  • funciones Anidadas son una GCC extensión. Ellos no son compatibles con el estándar de C.
  • Él quiere decir que debo publicar una respuesta hacia abajo por debajo de estos comentarios, pero en realidad esto es sólo un duplicado acerca de funciones anidadas. funciones Anidadas en C.
  • Ah bueno. ¿Cómo debo cerrar la pregunta? Todavía quiero ser capaz de mirar hacia atrás en este si me encuentro con un problema como este más adelante, así que no desee eliminar.
  • Yo soy de cerca de votos para el día, pero espero que alguien va a suceder, y que marca este como un duplicado. De todos modos, feliz de codificación.
  • El buen camino. Gracias de nuevo por toda la ayuda! Realmente aprecio a pesar de que es algo muy simple que se me pasa por alto.
  • Posibles duplicados de función Anidada en C

InformationsquelleAutor Drizzy | 2017-03-02

1 Kommentar

  1. 4

    Usted está recibiendo este error, debido a la addnum como se define dentro de la main función. C no admite las funciones anidadas de forma predeterminada. Pero, gcc tiene una extensión de características que permite funciones anidadas. No son estándar, y, como tales, son totalmente compilador-dependiente.

    Aquí es el enlace

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...