Problem with goto statement

Hello all,
I faced some problem in my code.
can someone help me.
This is the code:

const int DI=2;
const int DT=3;
#define bailoot0
#define bailoot1
#define bailoot2


#include<SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);

void setup() {
  pinMode(DI,INPUT);
  pinMode(DT,INPUT);
  
  SIM900.begin(19200);                                 // Start the exchange between GSM Sheild and arduino Uno by speed of 19200 baud
  SIM900power();                                       // Wake up the GSM Sheild
  delay(20000);
}

void SIM900power(){    
  digitalWrite(9 ,HIGH); 
  delay(1000);
  digitalWrite(9 ,LOW);
  delay(5000); 
}

void loop() {
bailoot0:
  if(DI||DT==1){
    goto bailoot1;
  }
  else{
    goto bailoot2;
  }
bailoot2:
  if(DI||DT==1){
    goto bailoot1;
  }
  else{
    goto bailoot0;
  }
bailoot1:
  SMS1();
  if(DI||DT==0){
    goto bailoot2;
  }
  else {
      if(DI||DT==1){
      goto bailoot1;
      }
      else{
      goto bailoot2;
    }
  }}
  
void SMS1() 
{
  SIM900.print("AT+CMGF=1\r");                         
  delay(100);
  SIM900.println("AT + CMGS = \"+2126xxxxxxxx\"");     
  delay(100);
  SIM900.println("Station 85: error 2");                 
  delay(100);
  SIM900.println((char)26);                            
  delay(100); 
  SIM900.println();
  delay(5000);                                        
  SIM900power();
}

This is the logic diagram that I'm tring to write its a code.

The problem with "goto" in your sketch is that it is present at all.

What problem do you have ?

There is almost never a good reason to use "goto" in a C/C++ program.

What do you think those #defines are supposed to be for ? You don't need to #define a goto label.

(probably the #defines)

The only time I see goto in C these days is usually deep in device drivers in Linux, usually only when the code is halfway across the screen, deep in nested conditions and the only sensible way to bailout of a failed condition is a goto.
It still jars me when I see one though.

this is my problem:

sketch_apr03a.ino: In function 'void loop()':
sketch_apr03a.ino:28:9: error: expected primary-expression before ':' token
sketch_apr03a.ino:28:9: error: expected ';' before ':' token
sketch_apr03a.ino:32:3: error: 'else' without a previous 'if'
sketch_apr03a.ino:33:18: error: expected identifier before ';' token
sketch_apr03a.ino:35:9: error: expected primary-expression before ':' token
sketch_apr03a.ino:35:9: error: expected ';' before ':' token
sketch_apr03a.ino:39:3: error: 'else' without a previous 'if'
sketch_apr03a.ino:40:18: error: expected identifier before ';' token
sketch_apr03a.ino:42:9: error: expected primary-expression before ':' token
sketch_apr03a.ino:42:9: error: expected ';' before ':' token
sketch_apr03a.ino:45:18: error: expected identifier before ';' token
sketch_apr03a.ino:49:20: error: expected identifier before ';' token
sketch_apr03a.ino:52:20: error: expected identifier before ';' token
Erreur lors de la compilation.
  if(DI||DT==1){

what do you expect this to do ?

I'd suggest that what you expect it to do, is not what it will actually do .

Ok it’s ok now,thank you , the problem was (#define )

DT can never be 1, since you set is a a constant of 3.

BUT.... you use it as a pin number so I suspect instead of if DT==1 you mean if digitalRead(DT) ==1?

This syntax is wrong too: DI||DT==1 I assume you mean if DI is 1 or DT is 1? (Or actually the pin reads not the pin values?)

So I think you mean this:

if (digitalRead(DI) ==1 || digitalRead(DT)==1) {......

(Leaving aside the whole issue of why you're using goto in the first place?)