` Preprocessor directive types: #FOO# Call a macro or function. #=BAR# A string that can be stored by a macro. #def# #ID# [#=VALUE#] Set a macro. #fed# #ID# Unset a macro. #dex# #ID?# ... #xed# If macro ID is defined, expand to ... (Defined EXpand). #uex# #ID?# ... #xeu# If macro ID is undefined, expand to ... (Undefined EXpand). #inc# #FILE# Include a file; first searches cwd, then some kind of $HALKPATH. #ID# Call a macro. ` ` Example usage: ` ` Simple header guard. ` #uex# #TEST# #def# #TEST# #inc# #io# #inc# #packet.hlk# #def# #VERSION# #= 3.14.1 # #def# #ERR# #= {io!print."Error D:"; die;} # :packet_t:p = packet!get; ?.(~=.p!version,#VERSION#),#ERR#; ` Throw error if versions do not match. ` #xeu#