erro: expected initializer before 'void'.... alguém me ajuda?

vou deixar aki o programa que estou a desenvolver, no qual me aparece esse tal erro que falei no titulo do topico.
alguma ajuda ou dica seria bem vinda...

#include <Wire.h>

byte fecth_humidity_temperature(unsigned int *p_Humidity, unsigned int *p_Temperature);
void print_float(float f, int num_digits)

#define TRUE 1
#define FALSE 0

void setup(void) 
{
  Serial.begin(9600);
  Wire.begin();
  //pinMode(4, OUTPUT);
  //digitalWrite(4, HIGH);
  delay(5000);
  Serial.println("<<<<<<<<<<<<<<<");
}

void loop(void)
{
  byte _status;
  unsigned int H_dat, T_dat;
  float RH, T_C;
  
  while(1)
  {
      _status = fecth_humidity_temperature(&H_dat, &T_dat);
  
    switch(_status)
    {
    case 0: Serial.println("Normal.");
            break;
    case 1: Serial.println("Stale Data.");
            break;
    case 2: Serial.println("In command mode.");
            break;
    default: Serial.println("Diagonostic.");
    }
  
  
    RH = (float) H_dat * 6.10e-3;// equação para calcular humidade relativa
    T_C = (float) T_dat * 1.007e-2 -40.0;// eq. para calcular temperatura
  
    print_float (RH,1);
    Serial.print("  ");
    print_float (T_C, 2);
    Serial.println();
    delay(1000);
  }
}

byte fetch_humidity_temperature(unsigned int *p_H_dat, unsigned int *p_T_dat)
{
    byte address, Hum_H, Hum_L, Temp_H, Temp_L, _status;
    unsigned int H_dat, T_dat;
    address = 0x27;
    Wire.beginTransmission( address);
    Wire.endTransmission();
    delay(100);
    
    Wire.requestFrom((int)address, (int) 4);// pedido de 4 bytes a partir do dispositivo slave com endereço "address"
    Hum_H =Wire.read();
    Hum_L =Wire.read();
    Temp_H =Wire.read();
    Temp_L =Wire.read();
    Wire.endTransmission();
    
    
    _status = (Hum_H >> 6) & 0x03;
    Hum_H = Hum_H & 0x3f;
    H_dat = (((unsigned int) Hum_H) <<8) | Hum_L;
    T_dat = (((unsigned int) Temp_H) <<8) | Temp_L;
    T_dat = T_dat / 4;
    *p_H_dat = H_dat;
    *p_T_dat = T_dat;
    return(_status);
}

void print_float( float f, int num_digits)
{
    int f_int;
    int pows_of_ten[4] = {1, 10, 100, 1000};
    int multiplier, whole, fract, d, n;
    
    multiplier = pows_of_ten[num_digits];
    if (f < 0.0)
    {
        f = -f;
        Serial.print("-");
    }
    whole = (int) f;
    fract = (int) (multiplier * (f- (float)whole));
    
    Serial.print(whole);
    Serial.print(".");
    
    for (n=num_digits-1; n>=0; n--)
    {
      d = fract / pows_of_ten[n];
      Serial.print(d);
      fract = fract % pows_of_ten[n];
    }
}

Resolvido!

#include <Wire.h>

#define TRUE 1
#define FALSE 0

void setup() 
{
  Serial.begin(9600);
  Wire.begin();
  //pinMode(4, OUTPUT);
  //digitalWrite(4, HIGH);
  delay(5000);
  Serial.println("<<<<<<<<<<<<<<<");
}

void loop(void)
{
  byte _status;
  unsigned int H_dat, T_dat;
  float RH, T_C;
  
  while(1)
  {
      _status = fetch_humidity_temperature(&H_dat, &T_dat);
  
    switch(_status)
    {
    case 0: Serial.println("Normal.");
            break;
    case 1: Serial.println("Stale Data.");
            break;
    case 2: Serial.println("In command mode.");
            break;
    default: Serial.println("Diagonostic.");
    }
  
  
    RH = (float) H_dat * 6.10e-3;// equação para calcular humidade relativa
    T_C = (float) T_dat * 1.007e-2 -40.0;// eq. para calcular temperatura
  
    print_float (RH,1);
    Serial.print("  ");
    print_float (T_C, 2);
    Serial.println();
    delay(1000);
  }
}

byte fetch_humidity_temperature(unsigned int *p_H_dat, unsigned int *p_T_dat)
{
    byte address, Hum_H, Hum_L, Temp_H, Temp_L, _status;
    unsigned int H_dat, T_dat;
    address = 0x27;
    Wire.beginTransmission( address);
    Wire.endTransmission();
    delay(100);
    
    Wire.requestFrom((int)address, (int) 4);// pedido de 4 bytes a partir do dispositivo slave com endereço "address"
    Hum_H =Wire.read();
    Hum_L =Wire.read();
    Temp_H =Wire.read();
    Temp_L =Wire.read();
    Wire.endTransmission();
    
    
    _status = (Hum_H >> 6) & 0x03;
    Hum_H = Hum_H & 0x3f;
    H_dat = (((unsigned int) Hum_H) <<8) | Hum_L;
    T_dat = (((unsigned int) Temp_H) <<8) | Temp_L;
    T_dat = T_dat / 4;
    *p_H_dat = H_dat;
    *p_T_dat = T_dat;
    return(_status);
}

void print_float( float f, int num_digits)
{
    int f_int;
    int pows_of_ten[4] = {1, 10, 100, 1000};
    int multiplier, whole, fract, d, n;
    
    multiplier = pows_of_ten[num_digits];
    if (f < 0.0)
    {
        f = -f;
        Serial.print("-");
    }
    whole = (int) f;
    fract = (int) (multiplier * (f- (float)whole));
    
    Serial.print(whole);
    Serial.print(".");
    
    for (n=num_digits-1; n>=0; n--)
    {
      d = fract / pows_of_ten[n];
      Serial.print(d);
      fract = fract % pows_of_ten[n];
    }
}

valeu....já tinha reparado que uma dessas dessa linhas estava a mais...e afinal eram as duas...obrigado

fabiohbm007:
Resolvido!

Portanto, em caso de erro apaga-se até dar certo?

O erro que vias acontecia porque não tinhas um ponto e virgula (:wink: em frente a esta linha:

void print_float(float f, int num_digits)

Se colocares um ponto e virgula garanto-te que funciona e não precisas de apagar código.

bubulindo...eu também reparei nesse pormenor, realmente deixou de dar esse erro...mas depois compilei com esse ";" e dava-me erro no compilador devido á linha de codigo

byte fecth_humidity_temperature(unsigned int *p_Humidity, unsigned int *p_Temperature);

eliminando essas duas linhas e testando o sensor, trabalhou bem..

abraço

Não apaguei até dar certo... ajudei, só não ensinei...
O codigo postado tem escrito o protótipo das funções(que no arduino é feito automaticamente...) desnecessário, o erro está na chamada da função dentro do código que está escrito errado, assim como o prototipo dela.

   _status = fecth_humidity_temperature(&H_dat, &T_dat);

mas a função chama-se

byte fetch_humidity_temperature(unsigned int *p_H_dat, unsigned int *p_T_dat)
{

assim sendo apaguei os prototipos e corrigi a grafia do nome da função...

Ok... no entanto, tendo em conta a sintaxe de C... colocar o protótipo das funcões é a maneira correcta de fazer o código. Não custa explicar a maneira correcta em vez de deixar só a fncionar. Imagina a diversão que será se alguém quiser sair da IDE do arduino para algo a sério...