Las constantes con nombres de D también se pueden definir utilizando las directivas inline, que proporcionan un medio más general de crear identificadores que se sustituyen por valores o expresiones predefinidos durante la compilación. Las directivas inline son una forma más potente de sustitución léxica que la directiva #define proporcionada por el preprocesador de C, porque la sustitución tiene asignada un tipo actual y se realiza utilizando el árbol de sintaxis compilado y no simplemente un conjunto de símbolos léxicos. Las directivas inline se especifican utilizando una declaración con el siguiente formato:
inline type name = expression ;
donde type es una declaración de un tipo existente, name es cualquier identificador de D válido que no se haya definido anteriormente como una variable inline o global y expression es cualquier expresión válida de D. Una vez que se ha procesado la directiva inline, el compilador de D sustituye la forma compilada de expression de cada instancia siguiente de name en el código fuente del programa. Por ejemplo, el siguiente programa D realizará un seguimiento de la cadena "hello" y el valor de número entero 123:
inline string hello = "hello"; inline int number = 100 + 23; BEGIN { trace(hello); trace(number); }
Se puede utilizar un nombre inline en cualquier lugar donde se pueda utilizar una variable global del tipo correspondiente. Si la expresión inline se puede evaluar en una constante de cadena o de número entero en el momento de la compilación, el nombre inline también se puede utilizar en contextos que requieran expresiones de constantes, como dimensiones de matrices escalares.
La expresión inline se valida para los errores de sintaxis como parte de la evaluación de la directiva. El tipo de resultado de expresión debe ser compatible con el tipo definido por inline, de acuerdo con las mismas reglas utilizadas para el operador de asignación de D (=). Una expresión inline no debe hacer referencia al identificador inline: las definiciones recursivas no están permitidas.
Los paquetes de software DTrace instalan una serie de archivos de código fuente de D en el directorio de sistema /usr/lib/dtrace que contienen directivas inline que puede utilizar en sus programas D. Por ejemplo, la biblioteca signal.d incluye directivas con el formato:
inline int SIGHUP = 1; inline int SIGINT = 2; inline int SIGQUIT = 3; ...
Estas definiciones de inline proporcionan acceso al conjunto actual de los nombres de señal de Solaris descritos en signal(3HEAD). De forma similar, la biblioteca errno.d contiene directivas inline para las constantes errno de C descritas en Intro(2).
De modo predeterminado, el compilador de D incluye automáticamente todos los archivos de la biblioteca de D proporcionados, por lo que puede utilizar estas definiciones en cualquier programa D.