C: return structure [SOLVED]

mi serve una funzione che ritorni più "valori" e ho pensato di usare struct... ma visto che sono anni che non scrivo in C e quel poco che so è 100% autodidatta... non riesco a uscirne, please help me!

Ecco il codice:

typedef struct {
  byte pages;
  char vars[20];
} HTTP_DEF;

void setup() {
  // hothing
}

void loop() {
  testFunction();
}

HTTP_DEF testFunction() {
  HTTP_DEF http_def;
  http_def.pages = 0;
  return(http_def);
}

Ed ecco l'errore:

error: 'HTTP_DEF' does not name a type In function 'void loop()':

sto uscendo pazzo :\

The arduino IDE is not very friendly to custom types. They need to be placed in 'external' .h files.

Original Sketch:

#include "http.h"

HTTP_DEF test = { 4 , "test" };

void setup() {
  // hothing
}

void loop() {
  testFunction(test);
}

Additional .h file called html.h

#include "WProgram.h"

struct HTTP {
  byte pages;
  char vars[20];
};

typedef HTTP HTTP_DEF;

void testFunction(HTTP_DEF& target) {
  target.pages = 0;
}

Hope that helps :)

Come già detto da alfabeta l’IDE di Arduino non supporta i tipi di dato definiti dal programmatore tramite, ad esempio, typedef.
Devi usare una libreria esterna che puoi scrivere in c o cpp e basta credo.

tnx AlphaBeta... but I'v read your post "too late" I have success without external libs: here you are the

struct HTTP_DEF {
  int pages;
  char vars[20];
} ;

void setup() {
  Serial.begin(9600);
  Serial.println("Started...");
}

void loop() {
  HTTP_DEF http_def;
  http_def.pages = 1;
  
  Serial.print(http_def.pages);
  
  http_def = testFunction();
  
  Serial.println(http_def.pages);
  delay (1000);
  
}

struct HTTP_DEF testFunction() {
  HTTP_DEF http_def;
  http_def.pages = 0;
  return(http_def);
}

...uccio... mai dire basta, semmai basta sbatterci la testa! :)

ehehe ;D

comunque hai dato del “codice” ad alfaBeta

here you are the Code:

non credo gli farà piacere :smiley: