Partilhar via


# line diretiva (C/C++)

O #line diretiva informa o pré-processador para alterar o número de linha armazenadas internamente do compilador e o nome de arquivo para um dado número de linha e o nome do arquivo.

#line digit-sequence ["filename"]

Comentários

O compilador usa o número da linha e o nome opcional para referir-se aos erros encontrados durante a compilação.O número da linha geralmente se refere à linha de entrada atual e o nome do arquivo refere-se ao arquivo de entrada.O número da linha é incrementado após cada linha é processada.

O seqüência de dígitos valor pode ser qualquer constante de inteiro.Substituição de macro pode ser executada em tokens de pré-processamento, mas o resultado deve ser avaliada como a sintaxe correta.O nome do arquivo pode ser qualquer combinação de caracteres e devem ser colocados entre aspas duplas ("").Se nome do arquivo é omitido, o nome de arquivo anterior permanecerá inalterado.

Você pode alterar o número da linha de código-fonte e o nome de arquivo, escrevendo um #line diretiva.O conversor usa o número de linha e o nome do arquivo para determinar os valores das macros predefinidas __FILE__ e __LINE__.Você pode usar essas macros para inserir mensagens de erro auto-descritivo no texto do programa.Para obter mais informações sobre essas macros predefinidas, consulte Macros predefinidas.

O __FILE__ macro se expande para uma seqüência de caracteres cujo conteúdo é o nome de arquivo entre aspas duplas ("").

Se você alterar o número de linha e o nome do arquivo, o compilador ignora os valores anteriores e continua o processamento com os novos valores.O #line diretiva é normalmente usada por geradores de programa para fazer com que as mensagens de erro referir-se o arquivo de origem em vez de para o programa gerado.

Os exemplos a seguir ilustram #line e o __LINE__ e __FILE__ macros.

Nesta declaração, o número da linha armazenadas internamente é definido como 151 e o nome do arquivo é alterado para copy.c.

#line 151 "copy.c"

Neste exemplo, a macro ASSERT usa as macros predefinidas __LINE__ e __FILE__ para imprimir uma mensagem de erro sobre o arquivo de origem, se uma determinada "afirmação" não é verdade.

#define ASSERT(cond)

if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}

Consulte também

Referência

Diretivas de pré-processador