Tutoriais e Programação
Linguagem C - Bibliotecas e Tipos
Qui 27 Nov 2008 20:23 |
- Detalhes
- Categoria: Linguagem C
- Atualização: Quinta, 27 Novembro 2008 20:57
- Autor: vovó Vicki
- Acessos: 86431
Manifestando e definindo variáveis
Uma variável é definida com
No exemplo acima, a variável h, de 64 bits, foi apenas manifestada. As restantes foram (manifestadas e imediatamente) definidas, sendo que a variável a não recebeu qualquer valor, a variável b recebeu o valor 3 e a variável d recebeu o valor de uma operação de multiplicação e divisão.
Ponteiros (que apontam para endereços) são manifestados ou definidos com asterisco. Tomemos a variável b como exemplo: se quisermos o valor de b, referenciamos b pelo "nome" e obtemos o valor 3 (nome é b e seu valor é 3). Mas, se quisermos saber em que endereço de memória foi armazenado o valor de b, usamos *b.
Para economizar digitação podemos colocar variáveis do mesmo tipo, separadas por vírgulas, numa única linha. Apenas para manter a ordem, é aconselhável não misturar ponteiros com outros inteiros:
Manifestando funções
O formato padrão do manifesto de funções é
Mas porque manifestar funções? Não seria mais rápido e prático defini-las diretamente e usá-las? Aí depende... veja o código abaixo:
Se criarmos diretamente a função funcTeste no módulo do programa A e, no módulo do programa B, inadvertidamente chamarmos a função com parâmetros que não são os que foram definidos, o compilador não tem como identificar o erro. Vai tudo muito bem até que se resolva executar o programa que, obviamente, vai dar pau. Para que o compilador possa checar todas as chamadas de funções, é preciso manifestá-las antes de defini-las.
Funções apenas manifestadas são chamadas de PROTÓTIPOS de função. No exemplo acima, se funcTeste tivesse um protótipo, o compilador estrilaria quando estivesse checando a chamada no módulo B, avisando que a chamada está incorreta. Apenas uma linha de protótipo pode economizar horas de debug quando tentamos encontrar um erro que só aparece em tempo de execução. Pense nisso!
Agora imagine que, para se garantir, você tenha que escrever os protótipos de todas as funções da linguagem C e da API do Windows que forem usadas pelo seu programa. Uma loucura! É aí que entram os arquivos cabeçalho, aqueles com a extensão .h e que se encontram no diretório /lcc/include/. Estes arquivos nada mais são do que coleções de protótipos. Basta incluir os cabeçalhos necessários com #include e ganhamos um monte de tempo. Graaaaande Jacob Navia, autor do lcc-win32, que forneceu o pacote completo!
Definindo funções
Definir funções tem o mesmo jeitão do manifesto de funções. Uma das diferenças é que, ao invés de usar ponto e vírgula, adicionamos um bloco de outras declarações delimitadas por colchetes. A outra diferença é que os argumentos precisam receber um nome (ou identificador). Estes identificadores são imprescindíveis porque apenas através deles é que poderemos acessar os argumentos. Um exemplo bem simples seria:
Observações da vó
Eu sei, este módulo foi um pouco sem graça porque não teve nenhum exemplo para brincar. Acontece que determinados conceitos são fundamentais se quisermos avançar com alguma segurança. Para compensar a falta de "brinquedinhos", os próximos módulos vão fazer a festa da garotada (e da adultada também )
Mas nem tudo foi pedreira. Se você entendeu o que é (e para que serve) um protótipo de função, então a linha numerada com 4/5, que consta do nosso programa dlg2.c, deixou de ser uma incógnita:
Para compensar a falta de exemplos neste tutorial, o próximo é sobre uma "janela de verdade". Não se preocupe com os detalhes porque, à medida que for necessário, explicações mais detalhadas serão dadas. Prometo
- << Anterior
- Próximo