aBlaze aBlaze - 1 month ago 9
C Question

(C) Function which impersonates a block of code in main

I'm trying to explain this satisfactorily, but when I call a function I want it to virtually insert itself into the main function's code, so I can save typing it out multiple times, however it directly affects variables defined in main. What's the best way to achieve this?

EDIT: I should probably make it clear I also want it to take a single argument.

Answer

Sounds like you need a preprocessor macro. These aren't real functions, but blocks of code the the preprocessor replaces before compiling the code. E.g., consider a simple macro to increment a number:

#include <stdio.h>

#define INC(x) x++

int main() {
    int a = 1;
    INC(a);
    INC(a);
    printf("%d\n", a);
    return 0;
}

The text INC(x) will be replaced with x++, so running this program will print out 3 (1 after two increments).

You could read more about macros in the Documentation (beta) Topic.

Comments