es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

error: el valor de tipo void no se ignora como debería ser en Arduino

Esta es una función para convertir un número de 1 dígito en un número de 3 dígitos. Por ejemplo, convertir ‘2’ en ‘002’.

void loop() {
 int x = convertdigit(time);
}

void convertdigit(int num){
  char buffer[50];
  int n;
  n=sprintf (buffer, "%03d",num);
  return buffer;
}
<code>
Error: el valor de tipo void no se ignora como debería
</code>
/sketch/sketch.ino: En la función 'void loop()':
/sketch/sketch.ino:33:30: error: el valor de tipo void no se ignora como debería
     int x = convertdigit(time);
                              ^
Error durante la compilación: estado de salida 1

¿Podría decirme cómo solucionarlo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que la función convertdigit está declarada como void, lo que significa que no tiene un tipo de retorno. Sin embargo, en la función loop, se está asignando a una variable de tipo int, lo que está causando un error del compilador.

    Para solucionar este problema, necesitas cambiar el tipo de retorno de la función convertdigit a char* en lugar de void. Aquí está el código actualizado:

    void loop() {
     char* x = convertdigit(time);
    }
    
    char* convertdigit(int num){
      static char buffer[50];
      int n;
      n=sprintf (buffer, "%03d",num);
      return buffer;
    }
    

    Al realizar este cambio, la función ahora retornará un puntero a char que se puede asignar a una variable. También, ten en cuenta que la variable buffer ahora tiene la clase de almacenamiento estática, lo que asegura que retendrá su valor entre llamadas a la función.

Comments are closed.