# Ambiente freestanding

O ambiente de execução *freestanding* é normalmente usado quando o código C é compilado para executar fora de um sistema operacional. Nesse ambiente nenhum dos recursos provindos do ambiente *hosted* são garantidos e sua existência ou não depende da implementação.

Os únicos recursos que são oferecidos pela libc são os declarados nos seguintes *header files*:

**\<float.h>**, **\<iso646.h>**, **\<limits.h>**, **\<stdalign.h>**, **\<stdarg.h>**, **\<stdbool.h>**, **\<stddef.h>**, **\<stdint.h>** e **\<stdnoreturn.h>**.

Quaisquer outros recursos são dependentes de implementação.

No GCC para compilar um código visando o ambiente *freestanding* é possível usar a opção `-ffreestanding`. Também se pode usar a opção `-fhosted` para compilar para ambiente *hosted* mas esse já é o padrão.

Já a opção `-nostdlib` desabilita a *linkedição* da libc.
