If you have a machine with a particular spindle that takes a certain amount of time to reach speed, or a coolant pump that requires a delay to reach pressure, those constraints should be in the machine tool implementation - not hard coded in the g-code. If you change the spindle to one that no longer requires a delay, do you want to have to re-post all of your prior jobs, or do you want to edit one line in one file and have all the prior g-code work correctly?
If you have a toolchanger on your machine, the programming for that is written in the M6 macro on the machine and not coded in the CAM programs post-processor. That's why this "macro" capability was added to Centroid machine software.
From section 13.2 in the mill operators manual:
Most M -Series CNC M functions from 0 through 90 can be fully customized. Exceptions are M2, M6, and
M25 that can be customized, but will always move the 3rd (Z) axis to the home position before executing
the macro M function commands. No M functions above 90 may be customized with macros. The default
action listed will be performed unless that M function has been customized.
To create a macro for an M-function, a file must be created in the C:\cncm directory. The file's name must
be mfuncXX.mac where XX is the M function number used to call the macro. M functions 0-9 must use
single digits in the filename (e.g. Use mfunc3.mac, not mfunc03.mac). The contents of the file may be any
valid M and G codes.
Each time the M function is encountered in a program, the macro file will be processed line by line.
NOTE: Nesting of macro M functions is allowed. Recursive calls are not: if a macro M function calls
itself, the default action of the function will be executed.