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 scopeplease 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