table of contents
ASSERT(3) | Manual do Programador do Linux | ASSERT(3) |
NOME¶
assert - aborta a execução do programa se a assertiva for falsa
SINOPSE¶
#include <assert.h>
void assert(scalar expression);
DESCRIÇÃO¶
Essa macro pode ajudar os programadores a encontrar erros em seus programas ou a lidar com casos excepcionais através de uma falha que produzirá uma saída de depuração limitada.
Se expresion for falsa (isto é, compara igual a zero), assert() imprime uma mensagem de erro na saída de erro padrão e encerra o programa chamando abort(3). A mensagem de erro inclui o nome do arquivo e a função que contém a chamada de assert(), o número da linha do código-fonte da chamada e o texto do argumento; algo como:
prog: some_file.c:16: some_func: Assertiva `val == 0' falhou.
Se a macro NDEBUG for definida no momento em que <assert.h> foi incluído pela última vez, a macro assert() gera nenhum código e, portanto, não faz absolutamente nada. Não é recomendável definir NDEBUG se usar assert() para detectar condições de erro, pois o software pode se comportar de forma não determinística.
VALOR DE RETORNO¶
Nenhum valor é retornado.
ATRIBUTOS¶
Para uma explicação dos termos usados nesta seção, consulte attributes(7).
Interface | Atributo | Valor |
assert() | Thread safety | MT-Safe |
DE ACORDO COM¶
POSIX.1-2001, POSIX.1-2008, C89, C99. Em C89, expression precisa ser do tipo int e um resultado indefinido se ela não for, mas na padronização de 1999 ela deve ser do tipo escalar.
BUGS¶
assert() é implementada como uma macro. Se a expressão avaliada gerar erro, o comportamento do programa dependerá de se NDEBUG estiver definida ou não. Podem surgir "heisenbugs", que desaparecem quando a depuração estiver ativada.
VEJA TAMBÉM¶
COLOFÃO¶
Esta página faz parte da versão 4.16 do projeto Linux man-pages. Uma descrição do projeto, informações sobre relatórios de bugs e a versão mais recente desta página podem ser encontradas em https://www.kernel.org/doc/man-pages/.
TRADUÇÃO¶
A tradução para português brasileiro desta página man foi criada por Paulo César Mendes <drpc@ism.com.br>, André Luiz Fassone <lonely_wolf@ig.com.br> e Rafael Fontenelle <rafaelff@gnome.org>.
Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.
Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.
15 setembro 2017 | GNU |