Arduino IDE Tabs Issue - Compiling out of order?

I thought I’d give tabs a try in the Arduino IDE (1.8.5) as my Blynk project is growing, any idea what I’m doing wrong?

As an example I have two tabs with the following code:

<AA_Includes.ino>

#define BLYNK_PRINT Serial

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "";
char ssid[] = "";
char pass[] = "";

<AA_Setup.ino>

void setup()
{
  // Debug console
  Serial.begin(115200);
  Blynk.begin(auth, ssid, pass);
}

void loop()
{
  Blynk.run();
}


BLYNK_APP_CONNECTED()
{
  Serial.println("App Connected!");
}

BLYNK_APP_DISCONNECTED()
{
  Serial.println("App Disconnected!");
}

From what I understand these should be concatenated and compiled as a single sketch.
However, if the setup function is not on the same tab as the includes it creates the following cpp in the temp folder, with the includes after the blynk functions:


#include <Arduino.h>
#line 1 "D:\\OneDrive\\Arduino\\AA_Includes\\AA_Includes.ino"
#line 1 "D:\\OneDrive\\Arduino\\AA_Includes\\AA_Includes.ino"
#line 1 "D:\\OneDrive\\Arduino\\AA_Includes\\BB_Setup.ino"
void setup();
#line 8 "D:\\OneDrive\\Arduino\\AA_Includes\\BB_Setup.ino"
void loop();
#line 14 "D:\\OneDrive\\Arduino\\AA_Includes\\BB_Setup.ino"
void BlynkWidgetWriteInternalPinACON(BlynkReq __attribute__((__unused__)) &request, const BlynkParam __attribute__((__unused__)) &param);
#line 19 "D:\\OneDrive\\Arduino\\AA_Includes\\BB_Setup.ino"
void BlynkWidgetWriteInternalPinADIS(BlynkReq __attribute__((__unused__)) &request, const BlynkParam __attribute__((__unused__)) &param);
#line 1 "D:\\OneDrive\\Arduino\\AA_Includes\\BB_Setup.ino"
#define BLYNK_PRINT Serial

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "";
char ssid[] = "";
char pass[] = "";




#line 1 "D:\\OneDrive\\Arduino\\AA_Includes\\BB_Setup.ino"
void setup()
{
  // Debug console
  Serial.begin(115200);
  Blynk.begin(auth, ssid, pass);
}

void loop()
{
  Blynk.run();
}


BLYNK_APP_CONNECTED()
{
  Serial.println("App Connected!");
}

BLYNK_APP_DISCONNECTED()
{
  Serial.println("App Disconnected!");
}





If I move the setup function to the first tab (containing the includes) it compiles correctly:

#include <Arduino.h>
#line 1 "D:\\OneDrive\\Arduino\\AA_Includes\\AA_Includes.ino"
#line 1 "D:\\OneDrive\\Arduino\\AA_Includes\\AA_Includes.ino"
#define BLYNK_PRINT Serial

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "";
char ssid[] = "";
char pass[] = "";


#line 11 "D:\\OneDrive\\Arduino\\AA_Includes\\AA_Includes.ino"
void setup();
#line 3 "D:\\OneDrive\\Arduino\\AA_Includes\\BB_Setup.ino"
void loop();
#line 9 "D:\\OneDrive\\Arduino\\AA_Includes\\BB_Setup.ino"
void BlynkWidgetWriteInternalPinACON(BlynkReq __attribute__((__unused__)) &request, const BlynkParam __attribute__((__unused__)) &param);
#line 14 "D:\\OneDrive\\Arduino\\AA_Includes\\BB_Setup.ino"
void BlynkWidgetWriteInternalPinADIS(BlynkReq __attribute__((__unused__)) &request, const BlynkParam __attribute__((__unused__)) &param);
#line 11 "D:\\OneDrive\\Arduino\\AA_Includes\\AA_Includes.ino"
void setup()
{
  // Debug console
  Serial.begin(115200);
  Blynk.begin(auth, ssid, pass);
}

#line 1 "D:\\OneDrive\\Arduino\\AA_Includes\\BB_Setup.ino"


void loop()
{
  Blynk.run();
}


BLYNK_APP_CONNECTED()
{
  Serial.println("App Connected!");
}

BLYNK_APP_DISCONNECTED()
{
  Serial.println("App Disconnected!");
}


Looks like a problem with Arduino’s automatic creation of Prototypes, If I add them to the first tab it resolves the issue:

void BlynkWidgetWriteInternalPinACON(BlynkReq __attribute__((__unused__)) &request, const BlynkParam __attribute__((__unused__)) &param);

void BlynkWidgetWriteInternalPinADIS(BlynkReq __attribute__((__unused__)) &request, const BlynkParam __attribute__((__unused__)) &param);

I think you need to ask about Arduino IDE issues over on the Arduino forum :wink:

Hi Gunner, I didn’t know it was an Arduino issue initially :slight_smile: