Macro vs. Function

Q

Advantages of a macro over a function?

✍: FYIcenter

A

Macro gets to see the Compilation environment, so it can expand __DATE__ __TIME__ __FILE__ #defines. It is expanded by the preprocessor.

For example, you can't do this without macros.

#define PRINT(EXPR) printf( #EXPR "=%d\n", EXPR)
PRINT( 5+6*7 ) // expands into printf("5+6*7=%d",
5+6*7);

You can define your mini language with macros:

#define strequal(A,B) (!strcmp(A,B))

Macros are a necessary evils of life. The purists don't like them, but without it no real work gets done.

2007-02-26, 7265👍, 0💬