How does an inline function differ from a preprocessor macro?
First, the preprocessor macros are just "copy paste" in the code before the compilation. So there is no type checking, and some side effects can appear
For example, if you want to compare 2 values:
#define max(a,b) ((a
The side effects appear if you use max(a++,b++)
for example (a
or b
will be incremented twice).
Instead, use (for example)
inline int max( int a, int b) { return ((a