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"); } }