These macros are actually defined in memory.c, but we document them here because they play an important role when writing implementation code for functions and operators.
These macros get the string (car*), long or double value of a variable. The macros can also be used to assign value a long or double value to a variable. Do not forget to change the type of the variable. You usually should call the macro CONVERT2XXX.
Note that you should NOT change the string value of a variable. The STRINGVALUE(x) is a (char *) pointer to a string. You have to change the characters in this string, or you should allocate a new string with longer or shorter length and copy the characters, but never change the (char *) pointer.