@nakeddef directive

The @nakeddef directive is the same as the @def directive except that when the macro is invoked no local namespace is pushed onto the namespace stack. The effect is that its local, nested macro definitions are added to the namespace of the caller. For example:

Before translationAfter translation
@nakeddef m1 =
{
@def n = 1
}
@nakeddef m2 =
{
@def n = 2
}
m1
int f() { return n; }
m2
int g() { return n; }











int f() { return 1; }
int g() { return 2; }