C言語 ##演算子について

defineで##演算子を使ったことがなかったので、忘れないためにメモしておきます。

トークン連結演算子といって、左辺##右辺のように指定すると左辺と右辺を結合してくれます。
以下の例だと、マクロMBで指定したRAMPS_13_EEBは連結されてBOARD_RAMPS_13_EFBとなりMOTHERBOARDと==で比較されます。

#define MOTHERBOARD BOARD_RAMPS_13_EFB
#define BOARD_RAMPS_13_EFB      33   // RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed)
#define MB(board) (MOTHERBOARD==BOARD_##board)
hoge(){
    if(MB(RAMPS_13_EEB)){
        printf("true¥n");
    }
}