A Biblioteca C GNU/Usando a biblioteca: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição
Sem resumo de edição
Linha 53:
 
Como definições de macro duplicam o funcionamento da função do mesmo modo que a verdadeira versão da função, geralmente não há necessidade para qualquer um destes métodos. De fato, remover definições de macro geralmente só deixam o seu programa mais lento.
 
 
== Nomes Reservados ==
 
Os nomes de todos os tipos, macros, variáveis e funções da biblioteca que vem com o padrão ISO C são reservadas incondicionalmente; seu programa não pode redefinir estes nomes. Todos os outros nomes da biblioteca são reservados se o seu programa incluir explicitamente o arquivo de cabeçalho que os define ou os declara. Existem várias razões para esta restrição:
 
* Outras pessoas que estiverem lendo o seu código podem ficar confusas se você estiver usando a função chamada '''exit''' para fazer algo diferente do que o '''exit''' padrão faz. Prevenir esta situação torna os seus programas mais fáceis de entender e contribui com a modularidade e a facilidade de manutenção.
* Isso evita a possibilidade do usuário acidentalmente redefinir uma função de biblioteca que é usada por outras funções de biblioteca.Se a redefinição fôsse permitida, estas outras funções poderiam não funcionar.
* Isso permite ao compilador fazer qualquer otimização especial necessária ao chamar estas funções, sem a possibilidade delas serem redefinidas pelo usuário. Algumas facilidades da biblioteca, como aquelas funções que lidam com números variáveis de argumentos e saídas não-locais. Tais recursos precisam de uma certa quantia de cooperação entre as partes do compilador C, e respeitando a implementação, é mais fácil para o compilador tratar tais recursos como partes da linguagem.
 
Além dos nomes documentados neste manual, nomes reservados incluem todos os identificadores externos (funções e variáveis globais) que começam com underline ('_') e todos os identificadores, não importa o uso, que começam com dois underlines ou um underline seguido por uma letra maiúscula. Desta forma, a biblioteca e os arquivos de cabeçalho podem definir funções, variáveis, e macros para propósitos internos sem o risco de entrar em conflito com os nomes nos programas do usuário.
 
Algumas classes de nomes de identificadores adicionais são reservadas para futuras extensões da linguagem C ou do ambiente POSIX. Ao usar estes nomes em seus programas atualmente, pode não causar nenhum problema; entretanto, evite usar tais nomes, pois podem entrar em conflito com versões futuras dos padrões C e POSIX.
 
* Nomes começados com a letra maiúscula 'E' seguida por um dígito ou outra letra maiúscula podem ser usados por nomes de códigos de erros adicionais.
* Nomes que começam tanto com 'is' ou 'to' seguidos por uma letra minúscula podem ser usadas por funções de conversão e teste de caracteres.
* Nomes começados com 'LC_', seguidos por uma letra maiúscula podem ser usados por macros adicionais especificando atributos dda região do usuário.
* Nomes de todas as funções matemáticas existentes sufixadas com 'f' ou 'l' são reservados para funções correspondentes que operam em argumentos de ponto flutuante simples e pontos flutuantes de precisão dupla, respectivamente.
* Nomes que começam com 'SIG' seguidos de uma letra maiúscula são reservados para nomes de sinais adicionais.
* Nomes que começam com SIG_' seguidos por uma letra maiúscula são reservados para ações de sinais adicionais.
* Nomes começados com 'str', 'mem', ou 'wcs' seguidos de uma letra minúscula são reservados para funções de strings e vetores adicionais.
* Nomes que terminam com '_t' são reservados para nomes de tipos adicionais.
 
Além disso, alguns arquivos de cabeçalho individuais reservam nomes além daqueles que elas definem. Você só tem que se preocupar com estas restrições se seu programa incluir alguns destes arquivos de cabeçalho:
 
* O arquivo de cabeçalho ''dirent.h'' reserva nomes começados com `d_'.
* O arquivo de cabeçalho ''fcntl.h'' reservam nomes começados com `l_', `F_', `O_', e `S_'.
* O arquivo de cabeçalho ''grp.h'' reserva nomes começados com `gr_'.
* O arquivo de cabeçalho ''limits.h'' reserva nomes terminados com `_MAX'.
* O arquivo de cabeçalho ''pwd.h'' reserva nomes começados com `pw_'.
* O arquivo de cabeçalho ''signal.h'' reserva nomes começados com `sa_' and `SA_'.
* O arquivo de cabeçalho ''sys/stat.h'' reserva nomes começados com `st_' and `S_'.
* O arquivo de cabeçalho ''sys/times.h'' reserva nomes começados com `tms_'.
* O arquivo de cabeçalho ''termios.h'' reserva nomes começados com `c_', `V', `I', `O', e `TC'; e nomes terminados com `B' seguido por um dígito.