Normally an FWEB macro can be redefined at will. The example
@m PI 3.14159 @m PI (-3)
is permissible, but probably not a good idea. If you want to ensure that a crucial macro definition is never redefined inadvertently, say ‘@m!’, as in
@m! PI 3.14159
That is called protecting the macro.
FWEB’s built-in functions and macros (beginning with ‘$’) are protected by default; see Redefining built-in functions. To override that protection, use the command-line options ‘-Tb’ (‘-Tb’: Permit built-functions to be redefined; for built-in functions) or ‘-Tm’ (‘-Tm’: Permit user macros to be redefined; for macros).