If I define a function macro with no actual body, is it like an empty string with the compiler (i.e. It doesn't generate any extra instructions at compile time)?
Example:
#define SomeMacro(a)
SomeMacro("hello"); // This line doesn't add any instructions, does it?
You're absolutely correct, the empty macro doesn't generate any code.
I've seen two places where this is useful. The first is to eliminate warnings when a function parameter isn't used:
#define UNUSED(x)
int foo(int UNUSED(value))
{
return 42;
}
The second is when you use conditionals to determine if there should be code or not.
#ifdef LOGGING_ENABLED
#define LOG(x) log_message(x)
#else
#define LOG(x)
#endif