960716-как относиться к пустоте как к аргументу?
В следующем коде:
void f() { int a=2, b=3; M(a+1); M(swap(a,b)); }
Я ищу такой выход:
a+1 --> 3
swap (a, b) --> x
Предположим, что swap - это функция, которая меняет местами значения a и b и возвращает void.
Как написать макрос M?
Другими словами, Мне нужен результат, если void, то он не выводит ничего, кроме x во втором столбце, А если он не void, то показывает результат.
Что я уже пробовал:
шаблонные функции и вариадические макросы.
Richard MacCutchan
Ваша функция не принимает никаких параметров и не возвращает результат, поэтому она действительно не служит никакой цели. Кроме того, ваш вопрос невозможно понять.
ilostmyid2
1. Многие программы написаны с void main(void), которые делают много вещей!
2. вопрос ясен. я описал это мельком.
PIEBALDconsult
2. Нет, не ясно. Пожалуйста, используйте "улучшить вопрос", чтобы добавить детали и контекст.
Richard MacCutchan
1. это верно, но они этого не делают и не могут вернуть результат.
2. - Другими словами, Мне нужен результат, если void, то он не выводит ничего, кроме x во втором столбце, А если он не void, то показывает результат."- Извините, но я понятия не имею, что это должно означать.
PIEBALDconsult
Ах, значит, макрос M должен выводить значение своего аргумента? Итак, что-то вроде
# определить M (x) printf ( x )
И это работает для аргумента a+1,но не для обмена аргументами(a , b), правильно ли я это понимаю?
ilostmyid2
да. я сказал, что все ясно.
PIEBALDconsult
Но это не так.