Documentation

    Table of Content
    • 3D File Formats
      • 3D File Formats
      • 3D2
      • 3DS
      • 3MF
      • AMF
      • ASE
      • DAE
      • DRC
      • E57
      • FBX
      • GLB
      • GLTF
      • IPT
      • JRXML
      • JT
      • MA
      • MB
      • OBJ
      • PLY
      • PRC
      • RVM
      • STEP
      • U3D
      • USD
      • USDZ
      • VRML
      • X
      • X3D
    • Audio File Formats
      • Audio File Formats
      • AAC
      • AC3
      • ALAC
      • FLAC
      • M3U
      • MID
      • MKA
      • MP3
      • MPC
      • OGG
      • OPUS
      • RA
      • SDT
      • STAP
      • WAV
      • WMA
    • CAD File Formats
      • CAD File Formats
      • CF2
      • DC3
      • DGN
      • DWF
      • DWFX
      • DWG
      • DWT
      • DXF
      • HPGL
      • IFC
      • IGES
      • IGS
      • JVSG
      • NWC
      • NWD
      • NWF
      • PAT
      • PHJ
      • PLT
      • PSM
      • PSS
      • RVT
      • STL
    • Compression File Formats
      • Compression File Formats
      • 7Z
      • ARC
      • ARJ
      • B6Z
      • BZ2
      • DAA
      • DAR
      • DEB
      • GZ
      • ICE
      • KGB
      • LBR
      • LZ4
      • LZMA
      • MPKG
      • OAR
      • PKG
      • RAR
      • RPM
      • RTE
      • TAR
      • TBZ
      • TGS
      • XAPK
      • XAR
      • ZIM
      • ZIP
      • ZL
    • Database
      • Database File Formats
      • ACCDB
      • ACCDE
      • ACCDT
      • ACCFT
      • BAK
      • BCP
      • DDL
      • DTSX
      • LDF
      • MDB
      • MDF
      • MYI
      • NDF
      • NSF
      • SQL
      • SQLITE
    • EBook File Formats
      • EBook File Formats
      • ACSM
      • AEP
      • APNX
      • AVA
      • AZW
      • AZW1
      • AZW3
      • AZW4
      • BKK
      • BPNUEB
      • CBC
      • CBR
      • CBZ
      • CEB
      • CEBX
      • DNL
      • EA
      • EAL
      • EBK
      • EDN
      • EPUB
      • ETD
      • FB2
      • FKB
      • HAN
      • HTML0
      • HTMLZ
      • HTXT
      • HTZ4
      • HTZ5
      • IBOOKS
      • KFX
      • KOOB
      • LIT
      • LRF
      • LRS
      • LRX
      • MART
      • MBP
      • MOBI
      • NCX
      • NVA
      • OEB
      • OEBZIP
      • OPF
      • ORB
      • PDB
      • PHL
      • PML
      • PMLZ
      • POBI
      • QMK
      • RB
      • RZB
      • RZS
      • SNB
      • TCR
      • TK3
      • TPZ
      • TR
      • TR3
      • VBK
      • WEBZ
      • YBK
    • Email File Formats
      • Email File Formats
      • EDB
      • EML
      • EMLX
      • ICS
      • MBOX
      • MSG
      • OFT
      • OLM
      • OST
      • PST
      • TNEF
      • VCF - Virtual Contact File
    • Font
      • Font File Formats
      • CFF
      • CFF2
      • EOT
      • FNT
      • FON
      • JFPROJ
      • OTF
      • PFA
      • PFB
      • PFM
      • SFD
      • TTC
      • TTF
      • Type1
      • WOFF
    • GIS File Formats
      • GIS File Formats
      • 000
      • E00
      • FileGDB
      • GeoJSON
      • GML
      • GPX
      • KML
      • KMZ
      • OSM
      • QGD
      • QGS
      • QGZ
      • QLR
      • QML
      • SHP
    • Image File Formats
      • Image File Formats
      • AI
      • APNG
      • AVIF
      • BMP
      • BPG
      • CDR
      • CMX
      • CPC
      • DCM
      • DIB
      • DICOM
      • DJVU
      • DNG
      • EMF
      • EMZ
      • EXIF
      • FLIF
      • FODG
      • GBR
      • GIF
      • HEIC
      • HEIF
      • ICO
      • J2C
      • J2K
      • JFIF
      • JP2
      • JPEG
      • JPF
      • JPM
      • JPX
      • JXR
      • MNG
      • ODG
      • OTG
      • PNG
      • PSB
      • PSD
      • SVGZ
      • TGA
      • TIFF
      • VDX
      • VSD
      • VSDM
      • VSDX
      • VSS
      • VSSM
      • VSSX
      • VST
      • VSTM
      • VSTX
      • VSX
      • VTX
      • WEBP
      • WMF
      • WMZ
      • XPM
    • Note Taking File Formats
      • Note Taking File Formats
      • ONE
      • ONETOC2
    • Page Description Language
      • Page Description Language
      • CGM
      • EPS
      • OXPS
      • PCL
      • PS
      • SVG
      • SWF
      • TEX
      • XPS
      • XSLFO
    • PDF
      • PDF
      • PDF/A
      • PDF/E
      • PDF/UA
      • PDF/VT
      • PDF/X
    • Presentation File Formats
      • Presentation File Formats
      • ODP
      • OTP
      • POT
      • POTM
      • POTX
      • PPS
      • PPSM
      • PPSX
      • PPT
      • PPTM
      • PPTX
    • Programming
      • Programming
      • C
      • Class
      • CPP
      • CS
      • CSPROJ
      • Dart
      • H
      • JAR
      • Java
      • JSP
      • JSPF
      • KT
      • MEL
      • MF
      • PHP
      • PY
      • SH
      • SLN
      • SWIFT
      • TOML
      • VB
      • VBPROJ
      • VCXPROJ
      • YAML
    • Project Management File Formats
      • Project Management File Formats
      • MPP
      • MPT
      • MPX
      • XER
      • XML
    • Spreadsheet File Formats
      • Spreadsheet File Formats
      • CSV
      • DIF
      • FODS
      • NUMBERS
      • NUMBERS-TEF
      • ODS
      • OTS
      • SXC
      • TSV
      • XLA
      • XLAM
      • XLM
      • XLS
      • XLSB
      • XLSM
      • XLSX
      • XLT
      • XLTM
      • XLTX
    • Video File Formats
      • Video File Formats
      • 3G2
      • 3GP
      • AMV
      • ASF
      • AVCHD
      • AVI
      • F4V
      • FLV
      • H264
      • H265
      • M4V
      • MJPEG
      • MK3D
      • MKS
      • MKV
      • MOV
      • MP4
      • MPG
      • MXF
      • QT
      • RM
      • RMVB
      • RV
      • SRT
      • VOB
      • VP6
      • VP8
      • VP9
      • WEBM
      • WMV
      • Xvid
    • Web File Formats
      • Web File Formats
      • ASP
      • ASPX
      • CHM
      • CSS
      • HTM
      • HTML
      • IXBRL
      • JS
      • JSON
      • MHT
      • MHTML
      • Sass
      • SCSS
      • VDW
      • XAML
      • XBRL
      • XHTML
      • XOML
      • XSLT
    • Word Processing File Formats
      • Word Processing File Formats
      • ABA
      • DOC
      • DOCM
      • DOCX
      • DOT
      • DOTM
      • DOTX
      • MD
      • ODT
      • OTT
      • RTF
      • TXT
      • WPS
    • Reporting
      • RDL
      • RDLC
      • RPL
    1. Home
    2. Programming
    3. H

    What's on this Page

      • What is a .H file?
      • .H File Format
        • Header Guards
      • .H File Example
      • References

    What is a .H file?

    A file with .h extension is a header file used in C/C++ files to include the declaration of variables, constants, and functions. These are referred by the C++ implementation files that contain the actual implementation of these functions. A .h header file can also include additional information such as Macro definitions. These header files are referenced in the C/C++ files using the #include directive. A new C++ project usually contains a special header file by the name stdafx.h file that is the starting point for all compilation chains and all the header files can be included in this single file. A .h file can be opened with any text editor, Eclipse IDE, Microsoft Visual Studio IDE, Borland C++ compiler and a lot other applications.

    .H File Format

    A .h file is plain text file that has its own rules for defining the syntax. Header files can contain the following information.

    Variables - In case of Object Oriented Programming (OOP), a class header file contains definitions of all class level variables that are accessible across the implementation source code files Methods Declaration - All the methods declarations are included in the .h header files to be accessible across multiple implementation files. Non-Inline Function Definitions - Header files can also contain definitions of a non-inline methods. Message Maps - A header file can also contain message maps in case of an MFC source code implementation. In such case, the message maps are linked to the functionality implementation which is linked to UI elements such as button, checkbox, radio buttons, etc.

    Header Guards

    Header files can raise to complex errors where multiple declarations are included in the same file as a result of adding other header files. This duplicate definitions raise compiler errors. This problematic situation can be avoided via a mechanism called header guard that are conditional compilation directives as shown below.

    #ifndef ANY_UNIQUE_NAME_HERE
    #define ANY_UNIQUE_NAME_HERE
    
    // your declarations (and certain types of definitions) here
    
    #endif
    

    With this header, the preprocessor checks whether the ANY_UNIQUE_NAME_HERE has already been defined. If the header is repeatedly included into the same file, the contents of the header will be ignored.

    .H File Example

    // sample.h
    #pragma once
    #include <vector> // #include directive
    #include <string>
    
    namespace N  // namespace declaration
    {
        inline namespace P
        {
            //...
        }
    
        enum class colors : short { red, blue, purple, azure };
    
        const double PI = 3.14;  // const and constexpr definitions
        constexpr int MeaningOfLife{ 42 };
        constexpr int get_meaning()
        {
            static_assert(MeaningOfLife == 42, "unexpected!"); // static_assert
            return MeaningOfLife;
        }
        using vstr = std::vector<int>;  // type alias
        extern double d; // extern variable
    
    #define LOG   // macro definition
    
    #ifdef LOG   // conditional compilation directive
        void print_to_log();
    #endif
    
        class my_class   // regular class definition,
        {                // but no non-inline function definitions
    
            friend class other_class;
        public:
            void do_something();   // definition in my_class.cpp
            inline void put_value(int i) { vals.push_back(i); } // inline OK
    
        private:
            vstr vals;
            int i;
        };
    
        struct RGB
        {
            short r{ 0 };  // member initialization
            short g{ 0 };
            short b{ 0 };
        };
    
        template <typename T>  // template definition
        class value_store
        {
        public:
            value_store<T>() = default;
            void write_value(T val)
            {
                //... function definition OK in template
            }
        private:
            std::vector<T> vals;
        };
    
        template <typename T>  // template declaration
        class value_widget;
    }
    

    References

    • Header Filers - Microsoft