#define NEW_NAME NEW_NAME_(__arbitrary_name_, __COUNTER__) #define NEW_NAME_(x,y) NEW_NAME__(x,y) #define NEW_NAME__(x,y) x##y #define WRAP(before, after) WRAP_(before, after, NEW_NAME) #define WRAP_(before, after, var) \ for(int var = ({before; 1;}); \ var; \ (after, var = 0) #define E1000_PHY_CHANGE_REG(hw, reg, var) \ WRAP(hw->phy.ops.read_reg(hw, reg, &var), \ hw->phy.ops.write_reg(hw, reg, var))