MakerGram Logo

    MakerGram

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Users
    • Groups

    Problems with using struct and enum in another tab

    Arduino
    2
    3
    411
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      FlorianB last edited by

      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

      1 Reply Last reply Reply Quote 1
      • F
        FlorianB last edited by

        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

        1 Reply Last reply Reply Quote 1
        • salmanfaris
          salmanfaris last edited by

          happy to hear that 🙂 👍

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Recent Posts

          • @codelery Awesome. That's great news. Kudos to @rafitc99 . 🙌

            @codelery Please keep us updated about your project, looking forward to seeing it in action 🤩

            • read more
          • C

            @rafitc99 I changed the buffer and that solved the problem. Thanks a lot for coming to my rescue.

            • read more
          • C

            @salmanfaris I did change the buffer size and everything is working perfectly. Thanks coming to my rescue.

            • read more
          • @codelery said in Help needed: Arduino Wireless Notice Board project:

            I am using the hardware serial (pin 0 and 1 on Arduino Uno)

            As @rafitc99 mentioned, you need to expand the Serila buffer, in the hardware serial also the Arduino board package implements a 64-byte ring buffer for send and receive on the hardware serial messages. So you need to change that to 256 as per your message length.

            • read more
          • C

            @rafitc99 The thing is that I am not using the SoftwareSerial library in receiving the message from the first microcontroller. I am using the hardware serial (pin 0 and 1 on Arduino Uno)

            • read more
          By MakerGram | A XiStart Initiative | Built with ♥ NodeBB
          Copyright © 2023 MakerGram, All rights reserved.
          Privacy Policy | Terms & Conditions | Disclaimer | Code of Conduct