prog:guia-de-estudo-c
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anteriorRevisão anteriorPróxima revisão | Revisão anterior | ||
prog:guia-de-estudo-c [2024/05/18 14:39] – Familiarização com outros projetos é anterior a práticas de depuração hrcerq | prog:guia-de-estudo-c [2024/12/28 01:05] (atual) – [História] correção ortográfica hrcerq | ||
---|---|---|---|
Linha 67: | Linha 67: | ||
O [[https:// | O [[https:// | ||
- | também é útil para obter uma visão geral sobreo | + | também é útil para obter uma visão geral sobre o tema. |
Linha 189: | Linha 189: | ||
etapas, notadamente: | etapas, notadamente: | ||
- | - Pré-processamento | + | - [[prog: |
- | - Compilação propriamente | + | - [[prog: |
- | - Montagem | + | - [[prog: |
- | - Ligação | + | - [[prog: |
As ferramentas que desempenham essas funções podem ou não estar | As ferramentas que desempenham essas funções podem ou não estar | ||
Linha 204: | Linha 204: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * // | ||
Existem vários compiladores C, alguns mais conhecidos e populares, | Existem vários compiladores C, alguns mais conhecidos e populares, | ||
Linha 221: | Linha 222: | ||
Conhecer ao menos esses dois já será suficiente para compreender as | Conhecer ao menos esses dois já será suficiente para compreender as | ||
funções centrais desse tipo de ferramenta. | funções centrais desse tipo de ferramenta. | ||
+ | |||
+ | === Pré-processamento === | ||
+ | |||
+ | Ao ler arquivos-fonte C, você talvez tenha reparado que algumas | ||
+ | linhas iniciam pelo caractere de jogo-da-velha (''#'' | ||
+ | que essa notação também é parte da linguagem C. Ledo engano. | ||
+ | |||
+ | Essas instruções são conhecidas como diretivas de pré-processamento, | ||
+ | e são usadas como um complemento da linguagem C para automatizar a | ||
+ | geração de partes do código C, antes que ele efetivamente seja | ||
+ | compilado (daí o nome " | ||
+ | |||
+ | Por exemplo, as diretivas de inclusão (''# | ||
+ | de um outro arquivo-fonte C (por convenção, | ||
+ | extensão '' | ||
+ | definição (''# | ||
+ | serão substituídos pelo valor definido em cada ocorrência. | ||
+ | |||
+ | Essas substituições são feitas pelo pré-processador. Além disso, ele | ||
+ | também substitui // | ||
+ | substitui comentários por espaços em branco. | ||
+ | Tudo isso é feito antes da compilação. O arquivo gerado pelo | ||
+ | pré-processamento terá código C, exclusivamente. | ||
+ | |||
+ | Você pode saber mais sobre as funções do pré-processador a partir | ||
+ | dos documentos a seguir: | ||
+ | |||
+ | * [[https:// | ||
+ | * // | ||
+ | |||
+ | Existem diferentes pré-processadores, | ||
+ | fazem parte de uma coleção de ferramentas para compilação, | ||
+ | GCC, Clang, TCC e outros, porém também existem pré-processadores | ||
+ | avulsos. Alguns exemplos: | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | |||
+ | === Compilação === | ||
+ | |||
+ | === Montagem === | ||
+ | |||
+ | === Ligação === | ||
==== Biblioteca C ==== | ==== Biblioteca C ==== | ||
Linha 262: | Linha 309: | ||
* // | * // | ||
+ | ===== Mais bibliotecas ===== | ||
+ | |||
+ | A biblioteca C é conhecida por ser pequena. Diferente de outros ambientes de desenvolvimento, | ||
+ | |||
+ | Em alguns casos você pode decidir implementar por conta própria (menos comum), e em outros, pode reutilizar alguma biblioteca existente. Se por um lado, essa característica de C pode parecer pouco prática para um iniciante, por outro lado, isso aumenta drasticamente a portabilidade da linguagem, pois amplia a quantidade de dispositivos capazes de aderir ao padrão da linguagem, além de facilitar a manutenção de implementações da bibliotecas C. | ||
+ | |||
+ | Saber quando implementar algo e quando buscar uma implementação pronta, bem como escolher quais bibliotecas você deseja utilizar é uma arte. Não apenas podem existir impeditivos técnicos para usar uma biblioteca em um projeto, como também impeditivos legais, a depender das licenças usadas pelas bibliotecas. | ||
+ | |||
+ | Como regra geral, uma grande quantidade de dependências (isto é, bibliotecas que um programa depende para funcionar) não é algo positivo. Quanto menos, melhor. Por outro lado, isso não significa que você deve então implementar do zero tudo o que quiser fazer, pois na prática o resultado pode ser muito pior, se você não souber o que está fazendo. | ||
+ | |||
+ | É importante entender que a escolha de bibliotecas pode limitar os dispositivos ou sistemas operacionais compatíveis com o programa. No entanto, isso pode ser uma característica aceitável em muitos casos, dependendo do objetivo do programa. Por exemplo, programas voltados para sistemas aderentes ao padrão [[https:// | ||
+ | |||
+ | Em relação a C, o padrão POSIX especifica uma biblioteca que inclui as funcionalidades básicas de C (isto é, da biblioteca padrão) e de extensões próprias (redes, interação com o sistema de arquivos, // | ||
+ | |||
+ | * [[https:// | ||
+ | * // | ||
+ | * // | ||
+ | |||
+ | Não por acaso, algumas bibliotecas C voltadas para esses sistemas (vide [[prog: | ||
===== Gerenciadores / Construtores ===== | ===== Gerenciadores / Construtores ===== | ||
Linha 289: | Linha 355: | ||
* [[http:// | * [[http:// | ||
+ | É desejável, sempre que possível, criar arquivos '' | ||
+ | portáveis, isto é, que funcionem em diferentes implementações. | ||
+ | Isto facilita significativamente a manutenção quando há | ||
+ | possibilidade de usar uma implementação diferente. | ||
+ | |||
+ | Por exemplo, em distribuições GNU/Linux, é mais comum o uso do | ||
+ | GNU Make, muitas vezes já instalado por padrão no sistema. Nos | ||
+ | BSDs, o mais comum é a implementação conhecida como '' | ||
+ | Ao criar scripts '' | ||
+ | diferentes, considere aderir totalmente ao padrão POSIX. | ||
+ | |||
+ | Isso pode ser um pouco difícil se você já tiver se acostumado | ||
+ | a uma implementação específica. O artigo a seguir oferece | ||
+ | algumas dicas nesse sentido. | ||
+ | |||
+ | * // | ||
===== Estilos de programação ===== | ===== Estilos de programação ===== | ||
prog/guia-de-estudo-c.1716053945.txt.gz · Última modificação: 2024/05/18 14:39 por hrcerq