Por ejemplo, para indicar que falló la apertura de un archivo, una función suele establecer la variable global al código de error indicando el motivo del fallo y devolver un manipulador de fichero no válido, tal y como muestra el siguiente ejemplo: Puesto que los códigos de error acostumbran a ser variables globales, pueden ser leídas o escritas desde cualquier porción del programa.
Para arreglar este problema, POSIX establece que errno debe ser una variable local al hilo[cita requerida].
Aunque se considera una mala práctica en la metodología que usa códigos de error y valores de retorno no comprobar los valores de retorno para mirar si la función falló, a menudo los programadores no comprueban si hubo algún error.
Si se intenta correr un programa bastante antiguo en sistemas con una versión reciente de libc, puede encontrarse con las siguientes situaciones dependiendo de la versión: errno está definido por el estándar ISO C como un lvalue modificable de tipo entero, y no debe declararse explícitamente.
Esto ya no funciona en las últimas versiones de libc.