Macros are preprocessed, whereas functions are compiled with the source code. No type checks are done in the case of macros, whereas type checking is done in the case of functions. Using macros increases the length of code, whereas functions keep the size of source code unaffected. Speed of execution is faster in macros as compared to the functions. Before the source code is compiled, the macro name is replaced by the macro value, whereas in functions, the transfer of control occurs during the function call. Macros are only helpful when you have minimal code to reuse; otherwise, functions are considered a better choice. Macros don’t check any compile-time errors, whereas functions do.