Pergunta

Qual é o significado de #line na C idioma? Onde seria usado?

Foi útil?

Solução

Ela diz ao compilador onde a seguinte linha realmente veio. Geralmente é apenas o pré-processador C que adiciona estes, por exemplo, ao incluir um arquivo, ele diz ao compilador (que é basicamente só ver um fluxo de dados) que nós estamos olhando para um arquivo diferente.

Isto pode soar estranho, mas o pré-processador simplesmente insere os arquivos de cabeçalho onde você especificar o seu inclui, e as obras do compilador sobre a coisa toda (todos os arquivos de cabeçalho concatenadas juntamente com seu código-fonte), você pode verificar o resultado da pré-processador fase se usando gcc com gcc -E myfile.c. De lá você vai notar que acrescenta uma directiva #line sempre que você incluir arquivos, e também sempre que reduz a quantidade de texto alimentado para o compilador (como grandes quantidades de comentários pode ser reduzida a uma única directiva #line, pulando à frente)

Ele também é usado por outros programas, como o bisão / yacc para dizer-lhe que o problema (se há um problema de compilação) está relacionado ao seu regras arquivo em uma linha específica, que o compilador de outra forma seria incapaz de fazer , como o bisão / yacc gera c-arquivos.

Outras dicas

É o chamado controle de linha pré-processador diretiva .

As expansões de ambos __FILE__ e __LINE__ são alteradas se uma directiva #line é usado. Isso faz com que o compilador para ver o número da linha da próxima linha fonte como o número especificado.

Seu principal uso é para fazer o compilador fornecer mensagens de erro mais significativos.

Você pode encontrar mais explicação e um exemplo de uso em da IBM documentação .

É um pragma palavra-chave:

" #line permite modificar o número da linha do compilador e (opcionalmente) o nome arquivo de saída para erros e avisos. Este exemplo mostra como relatar dois avisos associados com os números de linha. O #line 200 forças directiva o número da linha a ser 200 (embora o padrão é # 7) e até a próxima directiva #line, o nome do arquivo será relatado como "especial". a directiva #line padrão retorna a numeração de linha à sua numeração padrão, que conta as linhas que foram renumerados pela directiva anterior. "

Ele permite que você altere o número da linha aparente do arquivo.

O único uso que eu posso pensar para isso é fazer com que os números de linha sã depois de uma longa série de macros multi-linha.

uso é:

#line 42

É usado principalmente para fornecer os nomes de arquivo e números de linha de um arquivo de origem a partir do qual um arquivo C (seja cabeçalho ou implementação) foi criado. Dado que, o compilador emitiria diagnóstico que fazem alusão a arquivo de origem em vez de no arquivo gerado.

Preprocessors também usar isso para dica de cabeçalhos incluídos em um arquivo pré-processado que estes expandidas.

# é a string injing símbolo para o processador de C e C ++

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top