Nas versões anteriores do NetBeans IDE, as macros ofereciam hyperlinks para que fosse possível clicar nelas e ver sua expansão, o que fazia com que o IDE abrisse o arquivo de cabeçalho onde a macro estava definida. Esta abordagem não é adequada para macros simples, como constantes numéricas ou literal string, quando o objetivo é apenas consultar brevemente a sua definição.
O NetBeans IDE 6.7 inclui dois novos recursos para a exploração de códigos-fonte que contêm macros:
Dicas de ferramentas de macro, útil para macros simples e curtas
Exibição de expansão da macro, útil para macros mais complexas
Trabalhando com macros simples usando dicas de ferramenta
As dicas de ferramenta para macros permitem visualizar 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:
Pressione Ctrl+Alt.
Coloque o cursor do mouse sobre a macro que deseja expandir, uma dica de ferramenta se abre e exibe as informações ampliadas.
Se quiser obter mais informações, clique na macro enquanto pressiona Ctrl+Alt para abrir a janela Expansão de macro que mostra a função com a macro expandida.
Trabalhando com macros complexas usando a exibição da expansão de macro
A exibição de expansão da macro permite analisar 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 visualizar o código-fonte com o código da macro expandido:
Clique com o botão direito do mouse na macro e selecione Navegar->Visualizar 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 hyperlink.
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 hyperlinks na exibição da 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 exibição 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.
Vamos ver um exemplo simples:
#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;
/*
* Função principal
*/
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 "last person" (última pessoa).
A dica de ferramenta da expansão de macro diz que ID_FRINDS_NUMBER é "(((((0))+ 1)+ 1)+ 1)".
Ótimo, mas quanto é? Nesta situação simples é fácil dizer que a resposta é 3, mas imagine se houvesse duas mil pessoas.
Avaliando macros usando dicas de ferramenta
Agora é possível usar a avaliação de expressão em expressões também com macros.
Coloque o mouse sobre ID_FRINDS_NUMBER e você verá:
Também é possível avaliar toda a 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 observadores para avaliação de macros
Agora é possível usar macros nos observadores do depurador:
Tenha cuidado ao avaliar macros em observadores, pois tal avaliação pode alterar o estado do programa. Por exemplo, a avaliação de macros que se expandem a i++ aumentará i;