| Macro | Function |
| 1. Macro is pre-processed | 1. Function is not pre-processed |
| 2. It is not compiled | 2. It is compiled |
| 3. Macros do not check for compilation error | 3. Function checks for compilation error |
| 4. Macros are faster in execution than function | 4. Functions are slower in execution than Macro |
| 5. A Macro is written at the beginning of a C Program | 5. A Function is written as a statement block of a C Program |
| 6. In Macro, you can't do recursion | 6. In Function, you can do recursion |
| 7. Macros are useful when a small piece of code used in a program. | 7. Functions are useful when a large piece of code used in a program. |