#define
#define <identificador> [<texto de substituição>]Define identificadores, constantes manifiestas o pseudofunciones expandidas por el preprocesador.
Descripción general
#define asocia un identificador sensible a mayúsculas y minúsculas con un texto de sustitución. La expansión ocurre antes de compilar y no crea una variable en ejecución. También puede definir un símbolo sin valor para #ifdef y #ifndef.
Sintaxis
#define <identificador> [<texto de substituição>]Constantes manifiestas
#define MAX_PRODUCTOS 150
#define MENSAJE_ERROR "Operación no válida para este usuario."
User Function ExDefine()
Local nCantidad := 151
If nCantidad > MAX_PRODUCTOS
MsgStop(MENSAJE_ERROR, "Validación")
EndIf
ReturnLos identificadores se sustituyen antes de la compilación y no son variables de ejecución.
Pseudofunción
#define AREA(nBase, nAltura) (nBase * nAltura)
User Function ExArea()
Local nResultado := AREA(10, 12)
ConOut(CValToChar(nResultado))
ReturnEl preprocesador expande AREA(10, 12) en su expresión.
- Usa nombres en mayúsculas por convención.
- #define puede crear una constante manifiesta, un símbolo de control o una pseudofunción.
- Encierra las expresiones de pseudofunción entre paréntesis.
- La definición es visible desde su declaración en la unidad procesada.
- La sustitución es textual y una pseudofunción insegura puede repetir efectos secundarios.
- No ocultes lógica compleja en #define; usa una función real cuando importen la depuración o los tipos.
- Los identificadores distinguen mayúsculas y minúsculas.
