Redefinition of 'class xxx'

I know this was asked several times, but I read a lot of those discussions and could not figure out whats going on. For me it seems to be eater a limitation of c++ in arduino Ide or something I am missing. I did a very small test to show the error :

// main sketch
#include "tire.h"
#include "car.h"
Car c;
void setup() {
  // put your setup code here, to run once:
  Tire tire1;  tire1.tire_size = 2; tire1.tire_name = "front left";
  Tire tire2;  tire2.tire_size = 2; tire2.tire_name = "front right";  
  Tire tire3;  tire3.tire_size = 2; tire3.tire_name = "back left";
  Tire tire4;  tire4.tire_size = 2; tire4.tire_name = "back right";
  c.set_tires( tire1 , tire2 , tire3 , tire4 );
  c.car_type=1; c.car_name="toyota";
}
void loop() { }
// car.h
#include "car.h"
void Car::set_tires(Tire _tire1,Tire _tire2,Tire _tire3,Tire _tire4) {
  tire1=_tire1; tire2=_tire2; tire3=_tire3; tire4=_tire4;
}
// car.h
#include "tire.h"
#include <Arduino.h>
class Car {
public:
  int car_type;
  String car_name;
  Tire tire1;
  Tire tire2;
  Tire tire3;
  Tire tire4;
  void set_tires(Tire _tire1,Tire _tire2,Tire _tire3,Tire _tire4);
};
// tire.h
#include <Arduino.h>
class Tire {
public:
  int tire_size;
  String tire_name;
};

Why I get error ? What could I do to make classes programing to work ?

The exactly error :

In file included from /home/wagner/Arduino/sketch_may09a/car.h:2:0,
                 from /home/wagner/Arduino/sketch_may09a/sketch_may09a.ino:2:
tire.h:3:7: error: redefinition of 'class Tire'
 class Tire {
       ^~~~
In file included from /home/wagner/Arduino/sketch_may09a/sketch_may09a.ino:1:0:
/home/wagner/Arduino/sketch_may09a/tire.h:3:7: note: previous definition of 'class Tire'
 class Tire {
       ^~~~
exit status 1
redefinition of 'class Tire'

Unless you have a specific reason not to, at the top of every .h you write, put

#pragma once

That prevents re-including, which causes the "redefinition" errors.

Wow, forgot about that, thanks, that works.