blob: 5e091ba7a5bf1e31d7c7215db1c5c8ad3948c3c8 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="author" content="Nikolay.Krasilnikov@oracle.com">
<meta name="description" content="A short guide to macro features in C/C++ projects in
NetBeans IDE or Oracle Solaris Studio IDE.">
<meta name="keywords" content="NetBeans, IDE, macros,
tutorial, guide, user, documentation, open source, C, C++, make, dbx, gdb">
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">
<title>Explorando Macros em Projetos C/C++ - Tutorial do NetBeans IDE</title>
</head>
<body style="padding: 2px;">
<h1>Explorando Macros em Projetos C/C++ - Tutorial do NetBeans IDE</h1>
<div class="articledate" style="margin-left: 0px;font-style:italic;">
<p><em>Contribuição de <a href="mailto:Nikolay.Krasilnikov@oracle.com"><i>Nikolay Krasilnikov</i></a><br> Outubro de 2013</em> [Número da revisão: V7.4-1]</div>
<p>Este tutorial mostra como usar as novas funcionalidades do NetBeans IDE para examinar e depurar códigos que incluem macros.</p>
<p><b>Conteúdo</b></p>
<img alt="O conteúdo desta página se aplica ao NetBeans IDE 6.8, 6.9, 7.3 e 7.4" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-74-73.png" title="O conteúdo desta página se aplica ao NetBeans IDE 7.3 e 7.4">
<ul class="toc">
<li><a href="#requirements">Requisitos</a></li>
<li><a href="#investigate">Examinando Códigos que Usam Macros</a></li>
<li><a href="#debug">Depurando Códigos que Usam Macros</a></li>
</ul>
<h2><a name="requirements"></a>Requisitos</h2>
<p><b>Para seguir este tutorial, são necessários os recursos e o software a seguir.</b> </p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Software ou Recurso</th>
<th class="tblheader" scope="col">Versão Necessária</th>
</tr>
<tr>
<td class="tbltd1">NetBeans IDE</td>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">versão 7.3 ou 7.4 do NetBeans com o plug-in C/C++</a></td>
</tr>
<tr>
<td class="tbltd1">JDK (Java Developer Kit)</td>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">versão 6 ou 7</a></td>
</tr>
</table>
<p>Consulte as <a href="../../../community/releases/74/install.html">Instruções de Instalação do NetBeans IDE</a> e a <a HREF="../../../community/releases/74/cpp-setup-instructions.html"> Configuração do NetBeans IDE para o C/C++/Fortran</a><br> para obter informações sobre o download e a instalação do software necessário.
</p>
<h2><a name="investigate"></a>Examinando Códigos que Usam Macros</h2>
<p>As macros têm hyperlink, dessa forma, quando você pressiona Ctrl-clique nelas, o IDE abre o arquivo de cabeçalho no qual a macro é definida. No entanto, às vezes, para macros simples como, constantes numéricas ou literais de string, talvez você queira apenas dar uma olhada na definição da macro.</p>
<p>
O NetBeans IDE fornece duas funcionalidades para a exploração de códigos-fonte que contêm macros:</p>
<ul>
<li>Dicas de ferramentas de macro, útil para macros simples e curtas</li>
<li>A janela Expansão da Macro, útil para macros mais complexas</li>
</ul>
<h3><a name="tooltips"></a>Trabalhando com Macros Simples usando Dicas de Ferramenta da Macro</h3>
<p>As dicas de ferramenta para macros permitem exibir um pequeno pop-up sem que outro arquivo seja aberto.
</p>
<p><b>Para ativar a dica de ferramenta de uma macro para que você possa ver sua expansão:</b></p>
<ol><li>Pressione e segure Ctrl+Alt.</li>
<li>Coloque o cursor do mouse sobre a macro que deseja expandir, uma dica de ferramenta se abre e exibe as informações ampliadas, conforme mostrado na figura abaixo.</li>
</ol>
<P><img SRC="../../../images_www/articles/73/cnd/macros/macro-tooltip.png" alt="Expansão da dica de ferramenta da macro" class="b-all margin-around"></P>
<h3>Trabalhando com Macros Complexas usando a Janela de Expansão da Macro</h3>
<p>
A view de Expansão da Macro permite investigar códigos-fonte que apresentam macros complexas com várias linhas. As macros são usadas geralmente para definir constantes, mas também podem ser usadas para definir fragmentos de código que podem ser usados como funções. Quando você trabalha com códigos que usam macros dessa forma, pode ser difícil entender o que está acontecendo no código. Pode ser necessário examinar as macros em contexto com o código-fonte que está chamando a macro.
</p>
<p><b>Para exibir o código-fonte com o código da macro expandido:</b></p>
<ul>
<li>Clique com o botão direito do mouse na macro e selecione Navegar->Exibir expansão de macro no menu pop-up.<br> A janela Expansão de Macro se abre e exige a macro expandida em contexto como código que a chama.</li>
<li>Também é possível colocar ao mouse sobre o código em questão pressionando Ctrl+Alt e clicar no hiperlink para abrir a janela Expansão da Macro.</li>
</ul>
<p>A figura a seguir mostra a janela Expansão da Macro.</p>
<p>
<img SRC="../../../images_www/articles/73/cnd/macros/macro-expansion.png" alt="View de expansão da macro" class="b-all margin-around">
</p>
<p>
Na janela Expansão de Macro, o conteúdo da macro está localizado dentro de blocos protegidos. É fornecido o realce semântico ao código expandido. Você pode usar hiperlinks na janela Expansão de Macro para ir a outros arquivos de código-fonte. Também há realce para utilizações do parâmetro da macro.
</p>
<p>
A coluna esquerda da janela Expansão de Macro apresenta vários botões na barra de ferramentas:</p>
<ul>
<li>Sincronizar cursor, conteúdo e contexto<br> Esta opção sincroniza a posição do cursor e do conteúdo no arquivo de código-fonte na janela do editor e na janela Expansão de Macro.<br> Também altera o contexto para torná-lo apropriado para a posição do cursor (se Expandir contexto local somente estiver selecionado).
</li><li>Expandir contexto local somente - Somente as macros que estão no bloco de código onde se encontra o cursor são expandidas na janela Expansão de Macro.
</li>
<li>Expandir todo o arquivo<br> Todas as macros do arquivo de código-fonte são expandidas na janela Expansão de Macro.
</li>
<li>Setas para cima e para baixo<br> Estes botões servem para ir rapidamente para a próxima macro ou para a macro anterior.</li>
</ul>
<h2><a name="debug"></a>Depurando Códigos que Usam Macros</h2>
<p>
Às vezes, entender o significado de uma macro não é suficiente.<br> Por exemplo, suponha que você está depurando o código a seguir:
</p>
<pre>#include &lt;stdlib.h&gt;
#include &lt;iostream&gt;
#define ID_FIRST (0)
#define ID_ALICE (ID_FIRST)
#define ID_BOB (ID_ALICE + 1)
#define ID_TOM (ID_BOB + 1)
#define ID_FRINDS_NUMBER (ID_TOM + 1)
#define NEXT_PERSON(id) (id + 1)
#define PREV_PERSON(id) (id - 1)
using namespace std;
/*
* Main function
*/
int main(int argc, char** argv) {
int person = ID_TOM;
if (NEXT_PERSON(person) == ID_FRINDS_NUMBER) {
cout &lt;&lt; "last person";
}
return (EXIT_SUCCESS);
}
</pre>
<p>
Imagine que paramos o depurador na instrução <tt>if</tt> e queremos saber se o programa imprimirá ou não "última pessoa".
</p>
<p>
A dica de ferramenta da expansão de macro diz que <tt>ID_FRINDS_NUMBER</tt> é "<tt>(((((0))+ 1)+ 1)+ 1)</tt>".<br> Quanto é <tt>ID_FRINDS_NUMBER</tt>? Nesta situação simples pode ser fácil dizer que o valor de <tt>ID_FRINDS_NUMBER</tt> é 3, mas não pode ser fácil se você houver duas mil pessoas.
</p>
<p>Você pode achar útil avaliar a expressão na macro durante a depuração, conforme explicado abaixo.</p>
<h3>Avaliando Macros Usando Dicas de ferramenta</h3>
<p>
Você pode usar a avaliação da expressão nas expressões com macros do depurador.<br> Passe o ponteiro do mouse em <tt>ID_FRINDS_NUMBER</tt> e veja o que é mostrado na seguinte figura:<br>
</p>
<p>
<img SRC="../../../images_www/articles/73/cnd/macros/macro-debugging-expression-evaluation.png" alt="Macro de avaliação da expressão" class="b-all margin-around">
</p>
<p>
Você também pode selecionar a expressão toda e passar o mouse sobre ela para avaliar a expressão em uma dica de ferramenta, conforme mostrado na figura a seguir:<br>
</p>
<p>
<img SRC="../../../images_www/articles/73/cnd/macros/macro-debugging-expression-evaluation-2.png" alt="Macro de avaliação da expressão" class="b-all margin-around">
</p>
<p class="tips">
Tenha cuidado ao avaliar macros em dicas de ferramenta, pois tal avaliação pode alterar o estado do programa. Por exemplo, a avaliação de macros que se expandem a <tt>i++</tt> aumentará <tt>i</tt>.
</p>
<h3>Usando Watches para Avaliação de Macros</h3>
<p>
É possível usar as macros nos watches do depurador, conforme mostrado na figura a seguir:<br>
</p>
<p>
<img SRC="../../../images_www/articles/73/cnd/macros/macro-debugging-watches.png" alt="Macro relógios de depuração" class="b-all margin-around">
</p>
<p class="tips">
Tenha cuidado ao avaliar macros em watches, pois tal avaliação pode alterar o estado do programa. Por exemplo, a avaliação de macros que se expandem a <tt>i++</tt> aumentará <tt>i</tt>.
</p>
<h2>Consulte Também</h2>
<p>Consulte a <a href="https://netbeans.org/kb/trails/cnd.html">Trilha do Aprendizado C/C++</a> para obter mais artigos sobre o desenvolvimento com C/C++/Fortran no NetBeans IDE.</p>
<div class="feedback-box"><a href="mailto:users@cnd.netbeans.org?subject=Feedback:%20Exploring%20Macros%20in%20C/C++%20Projects%20-%20NetBeans%20IDE%207.4%20Tutorial">Enviar Feedback neste Tutorial</a></div>
</body>
</html>