Thursday, January 27, 2011

strange C macro syntax (#var)

What does the # symbol mean when used as a variable prefix in a #define macro?

For example,

#define my_setopt(x,y,z) _my_setopt(x, 0, config, #y, y, z)
  • It's the Stringizing Operator, which converts macro parameters to string literals.

    So in your example:

    my_setopt(1, 2, 3)
    

    would expand to:

    _my_setopt(1, 0, config, "2", 2, 3)
    
  • # quotes the expression. For example:

    #define SHOW(BAR) printf("%s is %d\n", #BAR , BAR)
    SHOW(3+5);  // prints: 3+5 is 8
    
    From sepp2k

0 comments:

Post a Comment