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 17:39] – Familiarização com outros projetos é anterior a práticas de depuração hrcerq | prog:guia-de-estudo-c [2025/04/16 14:31] (atual) – edição externa 127.0.0.1 | ||
|---|---|---|---|
| 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: (edição externa)