Приведение типа void и операторная запятая в C ++ в #define

Я обнаружил это при чтении исходного кода.

 #define MACRO(x)  if((void) 0, (x)); else some_func();

Я не знаю ' • полностью понять причины использования запятой оператора и пустого приведения. Вероятно, это как-то связано с защитой от макросов, я знаю, что (void) 0 иногда используется для защиты каскадных else в макросах, таких как if (... ) затем foo (); else (void) 0 .

Есть идеи, почему здесь операторная запятая?

edit: Я начинаю думать, что это как-то связано с совой ( 0,0) .

15
задан Community 23 May 2017 в 12:08
поделиться