Re[2]: #define
От: NordSky Россия  
Дата: 09.02.11 13:27
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, 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>>Вылазит ошибка, что проблема в макросе, где я ошибся?

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

if (x>0) x = 9;

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


Хотелось,конечно,без вызова функции обойтись, но придется скорее всего, спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.