Re: #define
От: uzhas Ниоткуда  
Дата: 09.02.11 13:20
Оценка: +1
Здравствуйте, NordSky, Вы писали:

NS>Хочу сделать так:


NS>
NS>#define ACTION(x) (\
NS> if(x > 0) x = 9; \
NS>)
NS>



NS>Пытаюсь использовать вот так


NS>
NS>void Foo(int i);  // прототип

NS>int i = 4; 
NS>.Foo(ACTION(i));  // вызов
NS>





NS>Вылазит ошибка, что проблема в макросе, где я ошибся?

в макросе нужно написать выражение. которые будет спокойно преобразовываться в int (аргумент функции Foo)
у вас нет такого выражения в макросе
там написано

if (x>0) x = 9;

у него нет целочисленного значения, это просто стейтменты
могу порекомендовать такое:
int Action(int& x)
{
  return x > 0 ? x = 9 : x;
}
void Foo(int i);
int i = 4;
Foo(Action(i));
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.