diff options
author | zlg <zlg@zlg.space> | 2013-08-08 06:35:27 -0500 |
---|---|---|
committer | zlg <zlg@zlg.space> | 2013-08-08 06:35:27 -0500 |
commit | 71eee1204d279fe7590d940a08423e3362609474 (patch) | |
tree | c8acead7b939cf5d72bdac14cd55efa21431ccae /ch4 | |
parent | Correct Exercise 1-22's solution (diff) | |
download | knr-71eee1204d279fe7590d940a08423e3362609474.tar.gz knr-71eee1204d279fe7590d940a08423e3362609474.tar.bz2 knr-71eee1204d279fe7590d940a08423e3362609474.tar.xz knr-71eee1204d279fe7590d940a08423e3362609474.zip |
Solve Exercise 4-14: Swap Macro
Thanks to ##c on Freenode for helping me understand what the text
didn't clarify.
Diffstat (limited to 'ch4')
-rw-r--r-- | ch4/4-14_swap-macro.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/ch4/4-14_swap-macro.c b/ch4/4-14_swap-macro.c new file mode 100644 index 0000000..ac2f102 --- /dev/null +++ b/ch4/4-14_swap-macro.c @@ -0,0 +1,30 @@ +#include <stdio.h> + +/* The C Programming Language: 2nd Edition + * + * Exercise 4-14: Define a macro swap(t,x,y) that interchanges two arguments + * of type t. (Block structure will help.) + * + * Answer: Macros are read and processed before syntax is, so you can turn + * a macro into shorthand code; more shorthand than functions sometimes. + * + * This macro assumes x and y are of t type. If the types don't match up, + * it'll (probably) break. + */ + +#define swap(t, x, y) {\ + t z;\ + z = x;\ + x = y;\ + y = z;\ +} + +int main() { + int a = 3; + int b = 7; + + printf("a is %d, b is %d\n", a, b); + swap(int, a, b); + printf("Now swap, and... a is %d and b is %d!\n", a, b); + return 0; +} |