Τι είναι ένα αρχείο HH;
Ένα αρχείο με επέκταση .hh είναι ένα αρχείο κεφαλίδας C++ που περιλαμβάνει τη δήλωση μεταβλητών, σταθερών και συναρτήσεων. Αυτές οι δηλώσεις χρησιμοποιούνται από τα αντίστοιχα αρχεία υλοποίησης της C++, που συνήθως αποθηκεύονται ως αρχεία .cpp που περιέχουν την πραγματική υλοποίηση της λογικής χρήστη. Τα αρχεία κεφαλίδας .hh αναφέρονται στα αρχεία CPP υλοποίησης χρησιμοποιώντας την οδηγία «#include». Μπορείτε να προσθέσετε όσο το δυνατόν περισσότερα αρχεία κεφαλίδας στο έργο σας C++ για να συμπεριλάβετε δηλώσεις σε επίπεδο έργου.
Μορφή αρχείου .HH
Ένα αρχείο .hh είναι ένα αρχείο απλού κειμένου που δημιουργείται λαμβάνοντας υπόψη τους κανόνες ορισμού του αρχείου κεφαλίδας. Οι πιο κοινές πληροφορίες που δηλώνονται σε ένα αρχείο .hh περιλαμβάνουν τις ακόλουθες.
Μεταβλητές
- Στην περίπτωση Αντικειμενοστρεφούς Προγραμματισμού (OOP), ένα αρχείο κεφαλίδας κλάσης περιέχει ορισμούς όλων των μεταβλητών επιπέδου κλάσης που είναι προσβάσιμες στα αρχεία πηγαίου κώδικα υλοποίησης
Δήλωση μεθόδων
- Όλες οι δηλώσεις μεθόδων περιλαμβάνονται στα αρχεία κεφαλίδας .h για να είναι προσβάσιμες σε πολλαπλά αρχεία υλοποίησης.
Ορισμοί μη ενσωματωμένων συναρτήσεων
- Τα αρχεία κεφαλίδας μπορούν επίσης να περιέχουν ορισμούς μη ενσωματωμένων μεθόδων.
Χάρτες μηνυμάτων
- Ένα αρχείο κεφαλίδας μπορεί επίσης να περιέχει χάρτες μηνυμάτων σε περίπτωση εφαρμογής πηγαίου κώδικα MFC. Σε αυτήν την περίπτωση, οι χάρτες μηνυμάτων συνδέονται με την υλοποίηση λειτουργικότητας που συνδέεται με στοιχεία διεπαφής χρήστη όπως κουμπί, πλαίσιο ελέγχου, κουμπιά επιλογής κ.λπ.
Διαφορά μεταξύ αρχείων .H και .HH
Προφανώς, δεν υπάρχει τέτοια διαφορά μεταξύ των αρχείων κεφαλίδας .h και .hh εκτός από τον προτεινόμενο τρόπο χρήσης τους για αντίστοιχες γλώσσες, π.χ. C ή C++. Η ονομασία των αρχείων κεφαλίδας σύμφωνα με αυτές τις γλώσσες σάς βοηθά να τα διακρίνετε σε ένα μεγάλο έργο που μπορεί να είναι ένας συνδυασμός υλοποιήσεων C και C++.
Επιπλέον, εάν οι κεφαλίδες διαχωρίζονται κατά επέκταση, ο επεξεργαστής σας μπορεί να εφαρμόσει αυτόματα την κατάλληλη μορφοποίηση για αντίστοιχα.
Συνολικά, η διαφοροποίηση αυτών των δύο μορφών αρχείων δεν θα βλάψει, αλλά θα είναι επωφελής και ενθαρρύνεται να ακολουθηθεί για διάκριση C και C++.
Φρουροί κεφαλής
Τα αρχεία κεφαλίδας μπορεί να αυξηθούν σε πολύπλοκα σφάλματα όπου πολλές δηλώσεις περιλαμβάνονται στο ίδιο αρχείο ως αποτέλεσμα της προσθήκης άλλων αρχείων κεφαλίδας. Αυτοί οι διπλοί ορισμοί προκαλούν σφάλματα μεταγλωττιστή. Αυτή η προβληματική κατάσταση μπορεί να αποφευχθεί μέσω ενός μηχανισμού που ονομάζεται προστασία κεφαλίδας που είναι οδηγίες συλλογής υπό όρους όπως φαίνεται παρακάτω.
#ifndef ANY_UNIQUE_NAME_HERE_HPP
#define ANY_UNIQUE_NAME_HERE_HPP
// your declarations (and certain types of definitions) here
#endif
Με αυτήν την κεφαλίδα, ο προεπεξεργαστής ελέγχει εάν το “ANY_UNIQUE_NAME_HERE_HPP” έχει ήδη οριστεί. Εάν η κεφαλίδα περιλαμβάνεται επανειλημμένα στο ίδιο αρχείο, τα περιεχόμενα της κεφαλίδας θα αγνοηθούν.