Ragazzi, ho un listato che crea un archivio di studenti, però non riesco a capire perchè viene usato ifndef, quale sarebbe la condizione da far verificare al preprocessore?

codice:
#ifndef _STUDENTE_
#define _STUDENTE_

#include <iostream>
using namespace std;

const int size=20;

typedef struct Studente {
  char nome[size];
  int  matricola;
  int numeroEsami;
};

void  crea_record(Studente &);

#endif
Questo è il file Archivio.cpp se può essere d'aiuto:
codice:
#include "Archivio.h"

Archivio  crea_archivio(int & dim, int& num) {
  
  cout << "\n Quante entry ha l'archivio?";
  cin >> dim;
  Archivio t=new Studente[dim];
  num=0;
  return t;
}

bool  inserisci_record(Archivio t, int & num, const Studente s, const int n) {
  bool ok=true;
  if (num<n && t!=0) {
  t[num]=s;
  num++;    
  }
  else ok=false;
  return ok;
}

bool  ricerca_record(const Archivio t, const int m, const int num, int & pos) {
    
    bool trovato=false;
    int i=0;
    while(i<num && !trovato)
      if(m==t[i].matricola) {
          trovato=true;
          pos=i;
      }    
      else i++;
    return trovato;  
}    
    

void stampa_archivio(const Archivio t, const int num){
  if(t==0 || num==0) cout << "L'archivio è vuoto o non esiste";
  else
  for (int i=0; i<num; i++) {
    cout << "\n";
    cout << "\n" << i;
    cout << "[" << t[i].matricola << ','<< t[i].nome << ',' << t[i].numeroEsami << "]" << endl;
  }
}

void  stampa_dati(const Archivio t, const int pos, const int n, const int num) {
   if(pos >num || pos<0 || pos>n) cout << "\n posizione record non valida!"; 
   else
   cout << "\n [" << t[pos].matricola << ','<< t[pos].nome << ',' << t[pos].numeroEsami << "]" << endl;
    
}    

void  distruggi_archivio(Archivio & t, int & num, int & n)  {
  delete [] t;
  t=0;
  n=0;
  num=0;
}

void  crea_record(Studente & s){
    cout << "\n ******** Inserimento dati studente ********";
    cout << "\n Inserisci il numero di matricola: ";
    cin >> s.matricola;
    cin.ignore(); 
    cout << "\n Inserisci nome e cognome: ";
    cin.getline(s.nome,size);
    cout << "\n Inserisci il numero di esami: ";
    cin >> s.numeroEsami;
}
Grazie a tutti