Привет, у меня есть пример программы на макросах,
#include<iostream>
#define ABS(a) (a) < 0 ? -(a) : (a)
int main(){
printf("%d",ABS(-1));
std::cout<<ABS(-1);
return 0;
}
В вышеприведенной программе я пытался заменить -1 с помощью in MACRO , но если я пытаюсь распечатать его с printf это работает !, но если я использую cout , это выдает ошибку. Я знаю, что это связано с перегрузкой оператора "<<" </strong>, но я не знаю точной причины. Пожалуйста, кто-нибудь может объяснить? Заранее спасибо.
Редактировать:
Severity Code Description Project File Line Suppression State
Error C2678 binary '<': no operator found which takes a left-hand operand of type 'std::basic_ostream<char,std::char_traits<char>>' (or there is no acceptable conversion) practice_project C:\Users\source\repos\practice_project\Source.cpp 10
Это ошибка, которая должна быть указана c? Так что мой вопрос не в том, почему я не должен использовать MACROS , мой вопрос в том, почему printf дал мне ответ, а почему не cout?