Pragmas
Pragma:
pragma ( Identificador )
pragma ( Identificador , ListaExpressoes )
Pragmas são um modo de passar informações
especiais para o compilador e para adicionar extensões
específicas de vendedor à D. Pragmas podem ser usados
sozinhos terminados em ';', eles podem influenciar uma
instrução, um bloco de instruções,
uma declaração, ou um bloco de
declarações.
pragma(ident);
pragma(ident) declaração;
pragma(ident): declaração;
declaração;
pragma(ident) { declaração;
declaração;
}
pragma(ident) instrução;
pragma(ident) { instrução;
instrução;
}
O tipo de pragma é determinado pelo
Identificador.
ListaExpressoes é um lista separada por vírgulas de
ExpressoesAtribuiçao. As
ExpressoesAtribuiçao devem ser analisáveis como expressões, mas o que elas significam semanticamente é problema da semântica individual do pragma.
Pragmas Predefinidos
Todas as implementações devem suportar esses, mesmo que apenas ignorando-os:
- msg
- Imprime uma mensagem enquanto compila, as ExpressoesAtribuiçao
devem ser strings literais:
pragma(msg, "compilando...");
- lib
- Insere uma diretiva de no arquivo objeto para ligar na biblioteca especificada por ExpressoesAtribuiçao. As ExpressoesAtribuiçao devem ser uma string literal:
pragma(lib, "foo.lib");
Pragmas Específicos de Vendedor
Identificadores de pragmas
específicos de vendedor podem ser definidos se eles forem precedidos
pela marca registrada do vendedor, de forma semelhante a
identificadores de versão:
pragma(DigitalMars_funky_extension) { ... }
Compiladores devem diagnosticar um erro para
Pragmas não
reconhecidos,
mesmo se forem específicos de vendedor. Isso implica que pragmas
específicos de vendedor deveriam ser envolvidos por instruções de
versão:
version (DigitalMars)
{
pragma(DigitalMars_funky_extension) { ... }
}