Home / C Programming / C Preprocessor :: Discussion

Discussion :: C Preprocessor

  1. What will be the output of the program?

     #include
     #define str(x) #x 
     #define Xstr(x) str(x)
     #define oper multiply 
    
     int main()
      {   
         char *opername = Xstr(oper);     
         printf("%s\n", opername);     
         return 0;
      } 
    

  2. A.

    Error: in macro substitution

    B.

    Error: invalid reference 'x' in macro

    C.

    print 'multiply'

    D.

    No output

    View Answer

    Workspace

    Answer : Option C

    Explanation :

    The macro #define str(x) #x replaces the symbol 'str(x)' with 'x'.

    The macro #define Xstr(x) str(x) replaces the symbol 'Xstr(x)' with 'str(x)'.

    The macro #define oper multiply replaces the symbol 'oper' with 'multiply'.

    Step 1: char *opername = Xstr(oper); The varible *opername is declared as an pointer to a character type.

    => Xstr(oper); becomes,

    => Xstr(multiply);

    => str(multiply)

    => char *opername = multiply

    Step 2: printf("%s\n", opername); It prints the value of variable opername.

    Hence the output of the program is "multiply"


Be The First To Comment