It is, after all, a standard - it's not supposed to change from one GCC version to the next.
Não, não é um padrão. O padrão é que você pode escrever
#include <stdbool.h>em uma unidade de tradução e isso afetará certas coisas. Não há garantia dos padrões de linguagem que os cabeçalhos são arquivos, e muito menos que sejam arquivos em um diretório específico em um sistema de arquivos em seu computador com conteúdo fixo.
O ponto principal de tais cabeçalhos padrão é que eles fazem o que for apropriado para o compilador C / C ++ para fornecer as coisas que os padrões de linguagem dizem que devem fornecer em sua inclusão. Eles fornecem as declarações e macros necessárias (geralmente) usando palavras-chave internas, pragmas, macros e intrínsecos fornecidos pelo compilador. Isso, claro, varia de compilador para compilador.
Qual é o segundo erro que você está fazendo aqui. É um erro míope pensar que o GCC é o único compilador C / C ++. Pessoas com um histórico de programação DOS ou Win32 mais antigo, onde pode haver muitos compiladores, estarão muito familiarizados com a idéia de que os cabeçalhos padrão estão muito ligados ao compilador . Não se pode simplesmente pegar os cabeçalhos padrão (digamos) do Watcom C / C ++ e usá-los com a Borland, Microsoft, IBM ou qualquer outro compilador C / C ++.
Esse é o pensamento a adotar, porque isso também vale para você . Embora o que precisa ser feito em um cabeçalho padrão para atingir sua finalidade possa variar de uma versão do GCC para outra, elas também podem variar entre (digamos) o clang e o GCC. Os sistemas operacionais Unix e Linux não são não monoculturas de um compilador.
E, de fato, você encontrará float.h
, limits.h
, stdint.h
, stddef.h
, stdarg.h
e vários outros cabeçalhos padrão, todos residindo nesses locais específicos do compilador. limits.h
é um assunto particularmente confuso, porque abrange tanto o conhecimento específico do compilador quanto o conhecimento específico da plataforma de destino.
Leitura adicional
- "4.1.2 Cabeçalhos padrão". Fundamentação do Padrão Nacional Americano para Sistemas de Informação - Linguagem de Programação - C .
- Bjarne Stroustrup (2013). "Cabeçalhos da biblioteca padrão". A linguagem de programação C ++ . 4ª edição. Addison-Wesley. ISBN 9780133522853.
- Jonathan de Boyne Pollard (2012). Macros predefinidas em C / C ++ que informam quais recursos de idioma estão disponíveis. . Respostas frequentemente dadas.