Выходной поток в #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. В чём проблема?


Ответы (0 шт):