Macro Continuation (\) Preprocessor Operator: C Program


In this video lets see how we can have multiple line of code inside macro expansion, by using preprocessor operator – macro continuation( \ ).

Where Is It Used?

While you’re writing complex logic inside macro expansion, you’ll need to break the line and write code in next line. In such cases macro continuation operator is very helpful. And the code looks much cleaner and clearer.

Video Tutorial: Macro Continuation (\) Preprocessor Operator: C Program


[youtube https://www.youtube.com/watch?v=WUcSe_pSv0o]

YouTube Link: https://www.youtube.com/watch?v=WUcSe_pSv0o [Watch the Video In Full Screen.]

Source Code: Macro Continuation (\): C Program

#include<stdio.h>

#define SQUR(x) \
        printf("Square of %d is %d\n", x, (x * x));

int main()
{
    SQUR(5);

    return 0;
}

Output:
Square of 5 is 25

Here we are writing the macro expansion in the next line, so we are making use of macro continuation preprocessor operator (\).

Source Code: Macro Continuation (\) Preprocessor Operator: C Program

#include<stdio.h>

#define COMPANY(x) switch(x) { \
                     case 1: printf("1. Oracle\n"); break; \
                     case 2: printf("2. IBM\n"); break; \
                     case 3: printf("3. Ripple\n"); break; \
                     default: printf("default. Banks\n"); \
                   }

int main()
{
    COMPANY(3);
    COMPANY(2);
    COMPANY(50);

    return 0;
}

Output:
3. Ripple
2. IBM
default. Banks

Here we’ve multiple lines of code inside macro expansion. So at the end of each line we’ve written macro continuation symbol ( \ – backslash). Wherever you write the macro template, preprocessor will replace it with the macro expansion before execution.

For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List

For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert

Leave a Reply

Your email address will not be published. Required fields are marked *