===================================================
4.14 swap that interchanges two arguments of type t
===================================================
Question
========
Define a macro swap(t,x,y) that interchanges two arguments of type t.
.. coderun:: cprogs/ex_4.14_swap_t_x_y.c
:language: c
Explanation
===========
There are two types of macros in C namely object-like and function-like. In
object type, we do substitution and in function macros we can send a variable as
argument. In this program we are going to use function-like macro to swap.
We do this by defining macro::
#define swap(t,x,y) { t _z; \
_z = x;\
x = y;\
y = _z; }
In the macro, we send type `t` as an argument and two variables `x` and `y` to
swap. We create a temperorary variable called `_z` of type `t` and use it to
swap `x` and `y`.
Visualize the Full Solution
---------------------------
.. raw:: html
Visualize the Concept
---------------------
.. raw:: html