A linguagem de programação em C usada para definir as interfaces do sistema Solaris inclui um pré-processador que realiza um conjunto de etapas iniciais na compilação do programa C. Os pré-processadores C são comumente usados para definir substituições de macro, onde um símbolo em um programa C é substituído por outro conjunto de símbolos predefinidos, ou para incluir cópias de arquivos de cabeçalho do sistema. Você pode usar o pré-processador de C junto com seus programas em D, especificando a opção -C do dtrace. Esta opção faz com que o dtrace execute primeiro o pré-processador cpp(1) no arquivo-fonte do seu programa e, em seguida, passe os resultados para o compilador de D. O pré-processador C é descrito mais detalhadamente em The C Programming Language.
O compilador de D carrega automaticamente o conjunto de descrições de tipos associadas à implementação do sistema operacional, mas você pode usar o pré-processador para incluir outras definições de tipo, tais como tipos usados em seus próprios programas em C. Você também pode usar o pré-processador para realizar outras tarefas, tais como criar macros que se expandam em blocos de código de D e outros elementos do programa. Se você usar o pré-processador com o seu programa em D, talvez só possa incluir arquivos que contêm declarações de D válidas. Os arquivos de cabeçalho C típicos incluem apenas declarações externas de tipos e símbolos, que serão interpretadas corretamente pelo compilador de D. O compilador de D não pode analisar os arquivos de cabeçalho de C que incluem elementos de programa adicionais, tais como código-fonte da função de C, e produzirá uma mensagem de erro apropriada.