For Harbour function that don't use pcode, then you have to do it this way:
dummy.c
#define _HB_API_INTERNAL_
#include <hbapi.h>
void dummy( void )
{
hb_retc( "I am a dummy function" );
}
HB_FUNC( CHANGEDATE )
{
PHB_DYNS pDynSymDate = hb_dynsymFind( "DATE" );
pDynSymDate->pSymbol->value.pFunPtr = dummy;
}
example of use:
function Main()
? Date()
ChangeDate()
? Date()
return nil
output:
11/05/22
I am a dummy function
So before you allow the user to write a macro, you can modify the Harbour functions that you don't want the user to use, and after that you can restore the original values.
You can save the pFunPtr old values in C static values, and reload them
regards