Categoria

Linguagem C

Versionamento semântico e ABI compatibility
Linguagem C

Versionamento semântico e ABI compatibility

O versionamento semântico (SemVer) utiliza o formato MAJOR.MINOR.PATCH para comunicar o impacto de mudanças em uma biblioteca. Em C, esses números têm implicações diretas na compatibilidade binária:

05/05/2026
Typedef: criando aliases de tipos
Linguagem C 05/05/2026

Typedef: criando aliases de tipos

O typedef é uma palavra-chave da linguagem C que permite criar nomes alternativos (aliases) para tipos de dados existentes. Seu propósito principal é aumentar a legibilidade do código, simplificar declarações complexas e facilitar a manutenção de projetos de médio e grande porte.

Undefined behavior: os comportamentos que o C não define
Linguagem C 05/05/2026

Undefined behavior: os comportamentos que o C não define

No padrão C, undefined behavior é definido como "comportamento para o qual o padrão não impõe nenhum requisito". Isso significa que, ao encontrar uma operação classificada como UB, o compilador pode fazer literalmente qualquer coisa: gerar código que funciona por acaso, travar silenciosamente, ignorar a linha inteira, ou até mesmo fazer seu programa parecer funcionar corretamente em testes e falhar em produção.

Unions e campos de bits
Linguagem C 05/05/2026

Unions e campos de bits

Em Linguagem C, uma union é um tipo de dado que permite armazenar diferentes tipos de dados no mesmo espaço de memória. Diferentemente de uma struct, onde cada membro ocupa seu próprio endereço, todos os membros de uma union compartilham o mesmo local de memória.

Valgrind: detecção avançada de erros de memória
Linguagem C 05/05/2026

Valgrind: detecção avançada de erros de memória

O Valgrind é uma arquitetura de ferramentas de instrumentação binária que permite executar programas em um ambiente controlado, monitorando cada instrução e acesso à memória. Sua principal ferramenta, o Memcheck, é considerada o padrão-ouro para detecção de erros de memória em programas escritos em Linguagem C.

Variadic functions: stdarg.h e va_list
Linguagem C 05/05/2026

Variadic functions: stdarg.h e va_list

Funções variádicas são funções que aceitam um número variável de argumentos. Em C, essa capacidade é essencial para criar interfaces flexíveis, como as funções printf() e scanf() da biblioteca padrão, que podem receber diferentes quantidades e tipos de argumentos conforme a string de formato.

Variáveis e tipos básicos: int, char, float, double
Linguagem C 05/05/2026

Variáveis e tipos básicos: int, char, float, double

Em linguagem C, uma variável é um espaço reservado na memória do computador para armazenar dados que podem ser modificados durante a execução do programa. Cada variável possui um tipo, que define o formato e o tamanho dos dados que ela pode armazenar, além das operações permitidas.

Structs: agrupando dados heterogêneos
Linguagem C 05/05/2026

Structs: agrupando dados heterogêneos

Em Linguagem C, arrays permitem armazenar múltiplos valores do mesmo tipo, mas frequentemente precisamos agrupar dados de tipos diferentes que representam uma entidade lógica. Por exemplo, um registro de aluno contém nome (string), idade (inteiro) e notas (floats). As structs (estruturas) são o mecanismo da linguagem para criar tipos compostos que agrupam membros heterogêneos.

TCP server e client do zero
Linguagem C 05/05/2026

TCP server e client do zero

O modelo cliente-servidor é a base da comunicação em rede. No protocolo TCP/IP, o servidor oferece um serviço (como ecoar mensagens) e o cliente consome esse serviço. O TCP garante que os dados cheguem na ordem correta e sem perdas, estabelecendo uma conexão confiável entre as partes.

Testing em C: Unity, CMock e Ceedling
Linguagem C 05/05/2026

Testing em C: Unity, CMock e Ceedling

Testar código em C apresenta desafios únicos quando comparado a linguagens modernas. A ausência de orientação a objetos, o gerenciamento manual de memória e a forte dependência de hardware tornam a criação de testes unitários uma tarefa complexa. Diferentemente de linguagens como Java ou Python, onde frameworks de teste são onipresentes, o ecossistema C historicamente carecia de ferramentas padronizadas para esse fim.