error: 'sensorDHT' does not name a type



  • Hallo,
    habe hier ein Stückchen Code, dass von Platformio angemeckert wird und ich verstehe nicht warum:

    file: varTypen.h

    // DHT Sensor
    typedef struct 
    {
          uint16_t		ID;
          bool			valid;
          uint16_t		modelID;			// 999=unknown; ... see array "dhtModel"
          char			name[16];
    	  uint16_t		interval;			//	request interval
          float			lastTemp;         
          float			maxTemp;
          float			minTemp;
          bool			alarmActive;
          float			alarmMax;
          float			alarmMin;
    } dhtSensor_t;
    
    

    main.cpp

    #include  "varTypen.h"
    
    //  DHT-Sensor
    DHT dht(pinDHTa, DHTTYPE);
    
    dhtSensor_t	sensorDHT[2];
    sensorDHT[0].ID			= 0;
    strcpy(sensorDHT[0].name, "Wohnzimmer");
    

    Die Fehlermeldung:

    src\main.cpp:7:1: error: 'sensorDHT' does not name a type
     sensorDHT[0].ID   = 0;
     ^
    src\main.cpp:8:7: error: expected constructor, destructor, or type conversion before '(' token
     strcpy(sensorDHT[0].name, "Wohnzimmer");
    

    I don't see what's wrong ...



  • @Sven sagte in error: 'sensorDHT' does not name a type:

    DHT dht(pinDHTa, DHTTYPE);

    Wo ist das her? An dem restlichen Code kann man von hier kein Problem erkennen. Irgendwas in den Headern falsch, z.B. falscher Include-Guard? Oder irgendein anderer Fehler, der hier nicht mehr yu sehen ist.

    Mach doch bitte ein reproduzierbares Minimalbeispiel! Deine main.cpp, die du hier zeigst, ist vermutlich nicht die, mit der du kompilierst. Oder hast du den Code etwa nicht innerhalb einer Funktion wie int main() stehen? Dann wäre das die Lösung.

    PS: In C++ würde ich statt typedef struct { ... } name_t; hier einfacher struct name_t { ... }; schreiben.



  • Ist ein Programm für einen esp8266.
    Der Fehler tritt außerhalb einer Funktion auf, im "globalen" Bereich - was ist daran anders?

    #include <Arduino.h>
    #include  <DHT.h>
    #include  "varTypen.h"
    
    //  DHT-Sensor
    DHT dht(pinDHTa, DHTTYPE);
    
    dhtSensor_t	sensorDHT;
    sensorDHT.ID			= 0;
    strcpy(sensorDHT.name, "Wohnzimmer");
    
    void setup() 
    {
      byte  mac[6];
    
      dht.begin();
    }
    
    void loop() 
    {   
      uint32_t  currentMillis	=	0;
      uint32_t  gapMillis			= 0;
      uint16_t  loopCounter		= 0;
      uint16_t  mqttmaxretry  = 5;
    }
    
    


  • @wob sagte in error: 'sensorDHT' does not name a type:

    Oder hast du den Code etwa nicht innerhalb einer Funktion wie int main() stehen? Dann wäre das die Lösung.

    Danke, das war es ...


Log in to reply