Problems with using struct and enum in another tab



  • Hi I am using multiple tabs to make a big project more readable. Now i wanted one tab just to define structs and enums and get them out of the way.

    The problem is that e.g. in tab#2 i can't use these data structures because they were "not declared in this scope". So I included the tabs using something like
    #include "./tabWithEnums"

    This works fine until I want to use the same structs in a third tab. If I don't include the defining tab, then I get the upper error. If I include the defining tab in tab#3 then I get the error "redeclaration of ...".

    Running out of ideas, I put the structs and enums in the main tab - same result.

    May last idea was to define for example an enum with ON/OFF as values in every tab where I need them. Then I get the error "redeclaration" too.
    So i can't declare it twice because the IDE complains about double declaration but at the same time I can't use the correct declaration in the other tab. I am getting mad here.

    I reduced the example code to this:

    TAB1:

    #include "./tab2.h"
    
     enum {
      off,
      on
     };
     
     void setup() {
      Serial.begin(9600);
      Serial.println();
    }
    
    void loop() {
      something();
      delay(10000);
    }
    

    TAB2:

    void something () {
      Serial.println (on);
    }
    

    result:
    exit status 1
    'on' was not declared in this scope

    please help. I lost several hours on this and I don't want to go back and put all code in one TAB. Btw. I know how to use variables over various tabs (using "extern") and methods (by declaring them from the calling tab) but both doesn't help me. Just so you know that I really tried.

    thank you



  • I found the solution: if I #include all tabs in the main tab in the right order and the one with the structs is alphabetically before the others then it will work



  • happy to hear that 🙂 👍


Log in to reply
 

Recent Posts