derektywę #error tak jak #warning stosuje się w określonych warunkach (np, jeśli piszemy na kilka platform, i dla którejś jeszcze nie zdefiniowaliśmy interface'u, albo mamy coś nieprzetestowane i dla siebie, albo dla innych członków teamu zostawiamy komunikat w kodzie)
#error zatrzyma kompilacje, jeśli wejdzie w ten znacznik. Przykład zastosowania:
#ifdef __MORPHOS__
struct Library* MultimediaBase;
if (MultimediaBase = OpenLibrary("multimedia/multimedia.class", 52))
{
#else
#error "brak odpowiednika - konieczność zaimplementowania"
#endif
Tak więc kod skompiluje się dla systemu Morphos, dla innych systemów konieczne jest stworzenie wrapera wykonującego te same funkcje. Ponieważ ich nie ma, to dopóki nie napisze się takowych kod dla tych platform nie powinien się kompilować, gdyż nie będzie prawidłowo działać.