• Categories
  • Recent
  • Popular
  • Tags
  • Users
  • Groups
  • Register
  • Login
MakerGram Logo

MakerGram

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

Problems with using struct and enum in another tab

Arduino
2
3
601
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 14 Jun 2020, 13:31

    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 14 Jun 2020, 15:25

      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 14 Jun 2020, 15:28

        happy to hear that 🙂 👍

        1 Reply Last reply Reply Quote 0
        1 out of 3
        • First post
          1/3
          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 🤩

          7 Jul 2023, 06:58 • read more
        • C

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

          7 Jul 2023, 00:44 • read more
        • C

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

          7 Jul 2023, 00:41 • 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.

          6 Jul 2023, 12:22 • 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)

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