-1

I used #define macro with variable from another #define, but the ## not work! Please help!

#define _var 0b1010
#define JOIN(var1, var2) var1 ## var2

int main()
{   
    int num1 = JOIN(0b1010, 1010); // <== This works!
    int num2 = JOIN(_var, 1010); // <== This does not work!
    return 0;
}

1 Answers1

3

## doesn't expand macros in its operands. You need to wrap JOIN into yet another macro to fix this:

#define JOIN(var1, var2) JOIN_(var1, var2)
#define JOIN_(var1, var2) var1##var2
HolyBlackCat
  • 78,603
  • 9
  • 131
  • 207