Categoria

Linguagem C

Leitura e escrita de arquivos texto
Linguagem C

Leitura e escrita de arquivos texto

Arquivos texto são arquivos que armazenam dados legíveis por humanos, organizados em linhas separadas pelo caractere de nova linha (\n). Diferentemente dos arquivos binários, que armazenam dados em formato bruto (bytes sem interpretação), os arquivos texto podem ser abertos e visualizados em qualquer editor de texto simples. A terminação de linha varia entre sistemas operacionais: \n no Linux/macOS, \r\n no Windows, mas a biblioteca padrão do C trata essa diferença automaticamente no modo texto.

05/05/2026
Linker scripts: controlando o layout de memória
Linguagem C 05/05/2026

Linker scripts: controlando o layout de memória

O processo de compilação de um programa em C envolve quatro etapas principais: pré-processador, compilador, montador (assembler) e linker. Enquanto o compilador gera código objeto com endereços relativos, o linker é responsável por resolver símbolos e gerar o executável final com endereços absolutos. O linker script é o arquivo de configuração que controla exatamente como essa resolução ocorre.

Lock-free programming: atomics e memory ordering
Linguagem C 05/05/2026

Lock-free programming: atomics e memory ordering

Lock-free programming é um paradigma de concorrência onde múltiplas threads podem operar sobre dados compartilhados sem utilizar mecanismos de exclusão mútua tradicionais, como mutexes. A propriedade fundamental de um algoritmo lock-free é que pelo menos uma thread sempre faz progresso em um número finito de passos, independentemente do escalonamento do sistema operacional.

Logging estruturado com syslog ou custom logger
Linguagem C 05/05/2026

Logging estruturado com syslog ou custom logger

Em sistemas embarcados e servidores de alto desempenho, o logging não é um luxo — é uma necessidade operacional. Quando um processo crasha à 3h da manhã ou um buffer transborda em uma linha de produção, o log salva horas de debugging. A abordagem ingênua com printf espalhado pelo código gera ruído, perde contexto e frequentemente bloqueia a execução. Logging estruturado, por outro lado, organiza cada evento em campos previsíveis (timestamp, nível, módulo, mensagem), permitindo filtragem e anális

Loops: for, while e do-while
Linguagem C 05/05/2026

Loops: for, while e do-while

Em programação, loops (ou laços de repetição) são estruturas fundamentais que permitem executar um bloco de código múltiplas vezes. Esse conceito, chamado de iteração, evita a repetição manual de instruções e torna o código mais enxuto e eficiente.

Makefile: automatizando a compilação
Linguagem C 05/05/2026

Makefile: automatizando a compilação

Em projetos de Linguagem C que envolvem múltiplos arquivos .c e .h, compilar manualmente se torna rapidamente inviável. Imagine um projeto com 20 arquivos fonte: cada alteração exigiria recompilar todos os módulos, mesmo aqueles não modificados. O comando gcc *.c -o programa é uma solução ingênua que recompila tudo a cada execução, desperdiçando tempo.

Instalando GCC, Clang e configurando o ambiente
Linguagem C 05/05/2026

Instalando GCC, Clang e configurando o ambiente

GCC (GNU Compiler Collection) e Clang (baseado no LLVM) são os dois compiladores C mais utilizados atualmente. Ambos suportam os padrões modernos da linguagem (C99, C11, C17 e o experimental C2x), mas possuem diferenças importantes.

Inter-process communication: shared memory e message queues
Linguagem C 05/05/2026

Inter-process communication: shared memory e message queues

A comunicação entre processos (IPC) em sistemas UNIX oferece diversos mecanismos, cada um adequado a cenários específicos. Pipes e FIFOs permitem comunicação unidirecional baseada em fluxo de bytes, enquanto sockets oferecem comunicação bidirecional através da rede ou localmente. Os mecanismos System V (SysV) e POSIX fornecem abstrações mais poderosas: memória compartilhada, filas de mensagens e semáforos.

Interoperabilidade: chamando C a partir de outras linguagens
Linguagem C 05/05/2026

Interoperabilidade: chamando C a partir de outras linguagens

A interoperabilidade bem-sucedida depende do entendimento da ABI do C. Diferente de uma API (definida em código fonte), a ABI define como funções são chamadas em nível binário: convenção de chamada (cdecl, stdcall, fastcall), alinhamento de structs, tamanho de tipos primitivos e layout de memória. O padrão C não especifica uma ABI única — cada plataforma (x86, ARM, RISC-V) e sistema operacional define sua própria ABI. Por isso, ao exportar funções C, você deve garantir que o chamador use a mesma

Hello World e o ciclo compilar-linkar-executar
Linguagem C 05/05/2026

Hello World e o ciclo compilar-linkar-executar

O programa "Hello World" é o ponto de partida universal para quem aprende Linguagem C. Sua aparente simplicidade esconde um ciclo complexo de transformações que ocorrem antes que uma única palavra apareça na tela. Vejamos o código clássico: