Explorando Macros em Projetos C/C++ - Tutorial do NetBeans IDE

Este tutorial mostra como usar as novas funcionalidades do NetBeans IDE para examinar e depurar códigos que incluem macros.

Conteúdo

O conteúdo desta página se aplica ao NetBeans IDE 6.8, 6.9, 7.3 e 7.4

Requisitos

Para seguir este tutorial, são necessários os recursos e o software a seguir.

Software ou Recurso Versão Necessária
NetBeans IDE versão 7.3 ou 7.4 do NetBeans com o plug-in C/C++
JDK (Java Developer Kit) versão 6 ou 7

Consulte as Instruções de Instalação do NetBeans IDE e a Configuração do NetBeans IDE para o C/C++/Fortran
para obter informações sobre o download e a instalação do software necessário.

Examinando Códigos que Usam Macros

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.

O NetBeans IDE fornece duas funcionalidades para a exploração de códigos-fonte que contêm macros:

  • Dicas de ferramentas de macro, útil para macros simples e curtas
  • A janela Expansão da Macro, útil para macros mais complexas

Trabalhando com Macros Simples usando Dicas de Ferramenta da Macro

As dicas de ferramenta para macros permitem exibir um pequeno pop-up sem que outro arquivo seja aberto.

Para ativar a dica de ferramenta de uma macro para que você possa ver sua expansão:

  1. Pressione e segure Ctrl+Alt.
  2. 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.

Expansão da dica de ferramenta da macro

Trabalhando com Macros Complexas usando a Janela de Expansão da Macro

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.

Para exibir o código-fonte com o código da macro expandido:

  • Clique com o botão direito do mouse na macro e selecione Navegar->Exibir expansão de macro no menu pop-up.
    A janela Expansão de Macro se abre e exige a macro expandida em contexto como código que a chama.
  • 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.

A figura a seguir mostra a janela Expansão da Macro.

View de expansão da macro

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.

A coluna esquerda da janela Expansão de Macro apresenta vários botões na barra de ferramentas:

  • Sincronizar cursor, conteúdo e contexto
    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.
    Também altera o contexto para torná-lo apropriado para a posição do cursor (se Expandir contexto local somente estiver selecionado).
  • 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.
  • Expandir todo o arquivo
    Todas as macros do arquivo de código-fonte são expandidas na janela Expansão de Macro.
  • Setas para cima e para baixo
    Estes botões servem para ir rapidamente para a próxima macro ou para a macro anterior.

Depurando Códigos que Usam Macros

Às vezes, entender o significado de uma macro não é suficiente.
Por exemplo, suponha que você está depurando o código a seguir:

#include <stdlib.h>
#include <iostream>

#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 << "last person";
}
return (EXIT_SUCCESS);
}

Imagine que paramos o depurador na instrução if e queremos saber se o programa imprimirá ou não "última pessoa".

A dica de ferramenta da expansão de macro diz que ID_FRINDS_NUMBER é "(((((0))+ 1)+ 1)+ 1)".
Quanto é ID_FRINDS_NUMBER? Nesta situação simples pode ser fácil dizer que o valor de ID_FRINDS_NUMBER é 3, mas não pode ser fácil se você houver duas mil pessoas.

Você pode achar útil avaliar a expressão na macro durante a depuração, conforme explicado abaixo.

Avaliando Macros Usando Dicas de ferramenta

Você pode usar a avaliação da expressão nas expressões com macros do depurador.
Passe o ponteiro do mouse em ID_FRINDS_NUMBER e veja o que é mostrado na seguinte figura:

Macro de avaliação da expressão

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:

Macro de avaliação da expressão

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 i++ aumentará i.

Usando Watches para Avaliação de Macros

É possível usar as macros nos watches do depurador, conforme mostrado na figura a seguir:

Macro relógios de depuração

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 i++ aumentará i.

Consulte Também

Consulte a Trilha do Aprendizado C/C++ para obter mais artigos sobre o desenvolvimento com C/C++/Fortran no NetBeans IDE.

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2018, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo