Protheus :: Programação Básica em Advpl “Combo XX”
Macros do compilador:
Podemos visualizar uma macro do compilador como uma função diretamente na codificação de origem do programa onde poderíamos parametrizar uma seqüência de comandos, exatamente como uma função. A diferença é que as macros do pré-processador são substituídas diretamente no arquivo de origem ( elas não são chamadas do mesmo modo que uma função ) . Por exemplo, poderíamos escrever uma macro de pesquisa de mínimo como:
#DEFINE MIN( a , b ) IIF( a < b , a , b )
Quando, subseqüentemente, chamar-mos a MIN com:
nMin := MIN( nY , nZ )
O pré-processador a substituirá por sua definição como em:
nMin := IIF( nY < nZ , nY , nZ )
Defina a macro usando parâmetros formais, exatamente como uma função. Quando o pré-processador a expandir, ele os substituirá pelos verdadeiros parâmetros (argumentos). Isto é basicamente o que acontece quando você chama uma rotina ou função. A diferença é que a substituição dos argumentos ocorre no tempo do pré-processador com as macros do compilador, não durante a execução.
Podemos visualizar uma macro do compilador como uma função diretamente na codificação de origem do programa onde poderíamos parametrizar uma seqüência de comandos, exatamente como uma função. A diferença é que as macros do pré-processador são substituídas diretamente no arquivo de origem ( elas não são chamadas do mesmo modo que uma função ) . Por exemplo, poderíamos escrever uma macro de pesquisa de mínimo como:
#DEFINE MIN( a , b ) IIF( a < b , a , b )
Quando, subseqüentemente, chamar-mos a MIN com:
nMin := MIN( nY , nZ )
O pré-processador a substituirá por sua definição como em:
nMin := IIF( nY < nZ , nY , nZ )
Defina a macro usando parâmetros formais, exatamente como uma função. Quando o pré-processador a expandir, ele os substituirá pelos verdadeiros parâmetros (argumentos). Isto é basicamente o que acontece quando você chama uma rotina ou função. A diferença é que a substituição dos argumentos ocorre no tempo do pré-processador com as macros do compilador, não durante a execução.
Comentários
Postar um comentário