Выходной поток в #define
Возникла проблема с созданием макроса для выходного потока. Привожу упрощенный пример кода с проблемой:
#include <iostream>
#define LOG(a) \
if (a > 0) \
std::cout << "asd"; \
else \
std::cout << "zxc"
int main(){
LOG(0) << "123";
LOG(1) << "123";
return 0;
}
Скрипт выводит:
zxc123
asd
Хотя ожидалось:
zxc123
asd123
То есть оператор << ничего не дописывает в if, но дописывает в else. В чём проблема?