O que é o formato de ficheiro H?
Arquivos .h são criados ao trabalhar com as linguagens C, C++ ou Objective-C.
Conteúdo dos arquivos .h
Arquivos com a extensão .h contêm declarações ou macros de funções e podem conter dados como:
- declarações de variáveis e constantes,
- definições de struct, enum e tipos,
- referências
#includepara outros arquivos de cabeçalho
Na prática, os arquivos .h são usados para manter declarações compartilhadas - código que é referenciado frequentemente em vários arquivos-fonte .c e .cpp. Isso permite uma melhor legibilidade do código-fonte e eficiência do programador. Funções e macros definidas em arquivos .h tornam-nas reutilizáveis em projetos e facilitam o compartilhamento de código. Isso também torna mais fácil atualizar o código, pois a interface é armazenada em um único local bem conhecido.
Como os arquivos .h são usados?
Armazenar declarações compartilhadas em arquivos .h torna-as mais fáceis de acessar e adicionar ao código-fonte do projeto. Durante a compilação, o pré-processador C expande cada diretiva #include, copiando o conteúdo do cabeçalho para a unidade de tradução antes que o compilador continue. Cabeçalhos do sistema, como <stdio.h> ou <vector>, acompanham o compilador e não precisam ser distribuídos com seu projeto; no entanto, arquivos .h específicos do projeto fazem parte da árvore de fontes e viajam com ela. Muitos projetos C++ também usam arquivos .hpp para distinguir cabeçalhos exclusivos de C++ de cabeçalhos .h de C puro, embora ambos dependam do mesmo mecanismo #include.
Segurança e proteção
RISCO: LOWUm cabeçalho .h é código-fonte em texto simples e não é executado por si só, portanto, abrir ou ler um em um editor é seguro. A cautela no mundo real refere-se à COMPILAÇÃO, não ao formato do arquivo: o código do cabeçalho (e da fonte) de um projeto não confiável pode conter lógica maliciosa que só é executada quando você constrói e executa o programa; portanto, revise e compile códigos C/C++ desconhecidos apenas em uma sandbox/VM e de fontes em que você confia. Não há risco em simplesmente visualizar o texto. (Cabeçalhos também podem incluir arquivos do sistema e definir macros que alteram como o código dependente é compilado - relevante para desenvolvedores, não uma ameaça de segurança do arquivo isolado).
Detalhes do formato
em resumo- Cabeçalho Objective-C / Objective-C++ - O Objective-C da Apple também usa cabeçalhos .h (ex: declarando classes @interface), abertos da mesma forma no Xcode/editores de texto.
- ch / diversos dados de aplicativos - Alguns programas de nicho (e ferramentas antigas de jogos/dados) reutilizam .h para dados que não são código-fonte; identifique pelo conteúdo do arquivo, não pela extensão.
Programas que abrem arquivos H
Detalhes técnicos
especificação profunda| Tipo de arquivo | Cabeçalho de código-fonte em texto simples |
| Tipo MIME | text/x-c |
| Assinatura do arquivo (magic bytes) | Nenhuma - texto simples, identificado pela extensão e conteúdo |
| Construto de abertura típico | Include guard (`#ifndef NAME_H` / `#define NAME_H`) ou `#pragma once` para evitar inclusão múltipla |
| Papel do pré-processador | Expandido inline pelo pré-processador C antes da compilação; arquivos `.h` não são compilados diretamente |
| Sintaxe de inclusão | Cabeçalhos do sistema usam colchetes angulares (ex: `<stdio.h>`); cabeçalhos do projeto usam aspas duplas (ex: `"mylib.h"`) |
| Conteúdo típico | Declarações de funções, definições de macros, definições de struct e enum, aliases typedef e (em C++) declarações de classe |
| Extensões relacionadas | `.c`, `.cpp`, `.hpp`, `.hxx`, `.hh`, `.cc`, `.cxx` |
| Linkagem C++ | Cabeçalhos C incluídos em código C++ são frequentemente envolvidos em blocos `extern "C" { }` para evitar o name mangling |
| Codificação de caracteres | ASCII (norma histórica); UTF-8 amplamente aceito por compiladores modernos para identificadores e comentários |
| Proteção contra inclusão múltipla | Include guards ou `#pragma once` garantem que o mesmo cabeçalho seja processado apenas uma vez por unidade de tradução |
| Cabeçalhos da biblioteca padrão C | Seguem a convenção `<nome.h>`, ex: `<stdio.h>`, `<stdlib.h>`, `<string.h>` |
| Definições de template (C++) | Templates de função e classe devem ser totalmente definidos em arquivos de cabeçalho, pois são instanciados em tempo de compilação |
| Lançado | 1972 (C language; #include header convention from early C) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | en.cppreference.com |
Conversões de H
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos H.