www.digitalmars.com
Last update Sun Aug 20 17:04:32 2006

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); // sozinho

pragma(ident) declaração; // influencia uma declaração

pragma(ident): // influencia declarações subseqüentes
declaração;
declaração;

pragma(ident) // influencia bloco de declarações
{ declaração;
declaração;
}

pragma(ident) instrução; // influencia uma instrução

pragma(ident) // influencia bloco de instruções
{ 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) { ... }
}