// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Instruções da Aplicação C/C++ para Assistência ao Código
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Instruções da Aplicação C/C++ para Assistência ao Código - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Instruções da Aplicação C/C++ para Assistência ao Código

_Colaboração de link:mailto:vladimir.kvashin@oracle.com[+_Vladimir Kvashin_+] e link:mailto:vladimir.voskresensky@oracle.com[+_Vladimir Voskresensky_+]
Março de 2013_ [Número da revisão: V8.0]

A assistência ao código é um conjunto de funcionalidades do IDE que ajuda a navegar e editar o código-fonte. Para um Projeto C/C++ com Códigos-fonte Existentes ou um Projeto C/C++ do Binário Existente, você pode especificar como seu código será submetido a parse para ativar as funcionalidades de assistência ao código do IDE.

Observe que as dicas deste artigo aplicam-se principalmente a projetos de código-fonte existente ou de um binário existente. Para projetos que são criados e gerenciados pela assistência ao código IDE, a configuração não é necessária.



image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página aplica-se ao NetBeans IDE 8.0/7.4/7.3"]

|===
|-  |<<questionmark,O que Fazer quando seu Projeto Tem um Ponto de Interrogação na Janela Projetos ou uma Diretiva #include é Sublinhada em Vermelho >> 

|-  |<<analyzer, Configurando o Analisador de Código para a Assistência ao Código>> 

|-  |<<multiplatform,Configurando a Assistência ao Código para um Projeto Multiplataforma>> 

|-  |<<cannotbuild,Configurando a Assistência ao Código Quando Você não Consegue Construir o Projeto>> 

|-  |<<definitiondeclaration,Quando um Hiperlink vai para uma Definição de Função e Quando vai para uma Declaração>> 

|-  |<<namespace,Encontrando Todas as Definições de um Namespace>> 

|-  |<<declaration,Vendo o Nome de Declaração de uma Declaração Feita em uma Macro>> 
|===


== O que Fazer quando seu Projeto Tem um Ponto de Interrogação na Janela Projetos

Se seu projeto tem um ponto de interrogação na janela projetos ou uma diretiva  ``#include``  está sublinhada em vermelho, então seu projeto tem políticas include não resolvidas. O IDE usa o parser interno que é usado por funcionalidades de Assistência ao Código (Autocompletar Código, janela Classes, janela Navegador etc.). As marcações significam que esse parser não conseguiu resolver algumas diretivas  ``#include`` , pois o projeto IDE tem uma configuração incorreta. Isso pode ter ocorrido se o projeto tiver sido criado de fontes existentes sem a ajuda de informações de depuração ou se, por exemplo, os arquivos de origem tiverem incluído novas bibliotecas desde a criação do projeto IDE.

Estes são alguns dos possíveis motivos (organizados do mais para o menos provável):

* Caminhos include do usuário errados ou insuficientes especificados no projeto, na pasta lógica ou nas propriedades do arquivo
* Macros definidas pelo usuário erradas ou insuficientes especificadas no projeto, na pasta lógica ou nas propriedades do arquivo
* O arquivo de código-fonte foi incluído no projeto por engano
* O arquivo de cabeçalho não foi incluído em nenhum arquivo de código-fonte e, portanto, foi incluído no projeto por engano

Se você retiver o cursor do mouse sobre a pasta do projeto, uma dica de ferramenta exibirá algumas informações sobre o problema. Para obter mais informações, você pode clicar com o botão direito do mouse e selecionar Assistência ao Código -> Diretivas #include/#error com falha.

Tente iniciar o assistente Configurar Assistência ao Código clicando com o botão direito do mouse no nó do projeto e selecionando Assistência ao Código > Configurar Assistência ao Código para resolver o problema. Se você conhece o local dos arquivos que correspondem à diretiva include com falha, poderá configurar manualmente o projeto, a pasta lógica e as propriedades do arquivo.


== Configurando o Analisador de Código para a Assistência ao Código

Suponha que o código-fonte da sua aplicação seja gerenciado com um VCS (sistema de controle de versão) como Mercurial e você crie um projeto do IDE com o código-fonte. Se você abrir o projeto do IDe no IDE e obtiver as alterações do VCS, deverá compilar o projeto do IDE para atualizá-lo com as modificações.

Depois que você criar seu projeto no IDE, o projeto será automaticamente atualizado pelo IDE das seguintes formas:

* Novas unidades de compilação serão adicionadas ao projeto do IDE.
* As unidades de compilação existentes serão modificadas com inclusões e macros definidas pelo usuário novas ou alteradas.
* As unidades de compilação que são excluídas da compilação não são excluídas da assistência ao código.

O IDE usa um analisador de compilação para obter informações da compilação, usando uma técnica de interposição para obter chamadas de exec da biblioteca do sistema nas plataformas Oracle Solaris e Linux. Por padrão, o analizador de compilação é usado quando você cria um projeto com fontes existentes e quando executa manualmente Configurar Assistência ao Código. Se o analizador de compilação não for usado, o log de saída da compilação será usado para capturar informações.

Se você não quiser que o IDE execute atualizações no projeto, poderá desativar o analizador de compilação desta forma:

1. Clique com o botão direito do mouse no nó do projeto na janela Projetos e selecione Propriedades.
2. Na caixa de diálogo Propriedades do Projeto, clique na categoria Assistência ao Código.
3. Cancele a seleção da opção Usar Analisador de Compilação.

Para projetos de código-fonte que configuram o próprio ambiente no momento da compilação, o analisador de compilação nem sempre funciona bem. Se uma compilação falhar quando a opção Usar Analisador de Compilação for selecionada, você deverá verificar o script da compilação para ver se cancelou a definição da variável de ambiente  ``LD_LIBRARY_PATH`` . Se  ``LD_LIBRARY_PATH``  não estiver definida, você também deverá cancelar a definição de  ``LD_PRELOAD`` . Quando a definição dessas duas variáveis é cancelada, o analizador de compilação é automaticamente desativado. Se você não conseguir modificar o script da compilação, poderá desativar o analizador de compilação como descrito acima e o IDE poderá usar o log de saída para obter informações da compilação.


== Configurando a Assistência ao Código para um Projeto Multiplataforma

Se você estiver desenvolvendo um projeto multiplataforma usando um código existente, poderá usar o mesmo projeto IDE para diferentes plataformas. Crie uma configuração por plataforma e alterar a coleção de compiladores, opções do compilador e outras propriedades do projeto adequadamente.

O assistente Configurar Assistência ao Código também funciona por configuração: ele altera somente a configuração que está atualmente ativa. Portanto, é possível executá-lo separadamente para cada configuração e obter diferentes definições de assistência ao código para diferentes plataformas.


== Configurando a Assistência ao Código Quando Você não Consegue Construir o Projeto

O assistente Configurar Assistência ao Código será mais eficiente se você criar seu código com informações de depuração (as melhores opções são  ``-g3 -gdwarf-2``  para compiladores GNU e somente  ``-g``  para compiladores Oracle Solaris Studio.

Caso não seja possível compilar seu projeto ou se ele não contiver informações de depuração, o assistente Configurar Assistência ao Código tem um modo especial denominado Pesquisar Sistema de Arquivos para Arquivos de Cabeçalho C/C++. Nesse modo, o NetBeans IDE tenta solucionar diretivas include com falha procurando cabeçalhos no sistema de arquivos. O assistente permite inserir um caminho para pesquisar cabeçalhos. Por padrão, o caminho pesquisado é uma raiz de origem do projeto.

Para usar o assistente, clique com o botão direito do mouse e escolha Assistência ao Código > Configurar Assistência ao Código. Siga as etapas do assistente para permitir que o IDE atualize a assistência ao código. Clique no botão Ajuda para obter informações sobre cada etapa.


== Usando Hiperlinks para Navegar entre Chamadas e Declarações

A navegação por hiperlinks permite passar de chamadas de uma função, classe, método, variável ou constante para sua declaração. Para usar um hiperlink, siga um destes procedimentos:

* Passe o mouse sobre uma classe, método, variável ou constante, pressionando a tecla Ctrl. Um hiperlink é exibido juntamente com uma dica de ferramenta com informações sobre o elemento. Clique no hiperlink e o editor passará para a declaração. Pressione Alt+Seta para a esquerda para voltar para a chamada.
* Passe o mouse sobre um identificador e pressione Ctrl+B. O editor passa para a declaração.
* Pressione Alt+Seta para a esquerda para voltar para a chamada. Pressione Alt+Seta para a esquerda e Alt + Seta para a direita para se mover para frente e para trás no histórico de posição do cursor.

Você também pode clicar com o botão direito do mouse em um item e selecionar Navegar > Ir para Declaração/Definição ou outras opções para navegar pelo código.


== Encontrando Todas as Definições de um Namespace

Um namespace pode ser definido em diferentes arquivos do projeto. Para navegar entre diferentes definições de namespace, use a janela Classes (Ctrl-9). Clique com o botão direito do mouse no namespace no qual está interessado e selecione Todas as Declarações. Você verá uma lista de todas as definições classificadas por nomes de arquivo.

link:mailto:users@cnd.netbeans.org?subject=subject=Feedback:%20C/C++%20Application%20How-Tos%20-%20NetBeans%20IDE%208.0[+Enviar Feedback neste Tutorial+]
