21.03.2013 Views

Problem - Kevin Tafuro

Problem - Kevin Tafuro

Problem - Kevin Tafuro

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

} while (0)<br />

#define VARARG_CALL_1(func, a1) \<br />

func((a1))<br />

#define VARARG_CALL_2(func, a1, a2) \<br />

func((a1), (a2))<br />

#define VARARG_CALL_3(func, a1, a2, a3) \<br />

func((a1), (a2), (a3))<br />

#define VARARG_CALL_4(func, a1, a2, a3, a4) \<br />

func((a1), (a2), (a3), (a4))<br />

#define VARARG_CALL_5(func, a1, a2, a3, a4, a5) \<br />

func((a1), (a2), (a3), (a4), (a5))<br />

#define VARARG_CALL_6(func, a1, a2, a3, a4, a5, a6) \<br />

func((a1), (a2), (a3), (a4), (a5), (a6))<br />

#define VARARG_CALL_7(func, a1, a2, a3, a4, a5, a6, a7) \<br />

func((a1), (a2), (a3), (a4), (a5), (a6), (a7))<br />

#define VARARG_CALL_8(func, a1, a2, a3, a4, a5, a6, a7, a8) \<br />

func((a1), (a2), (a3), (a4), (a5), (a6), (a7), (a8))<br />

#else<br />

/* NOTE: This should work on any machine with any compiler */<br />

#define VARARG_MAGIC 0xDEADBEEF<br />

#define spc_next_varg(ap, type, var) \<br />

do { \<br />

(var) = va_arg((ap), (type)); \<br />

if ((int)(var) = = VARARG_MAGIC) { \<br />

fprintf(stderr, "spc_next_varg( ) called too many times!\n"); \<br />

abort( ); \<br />

} \<br />

} while (0)<br />

#define VARARG_CALL_1(func, a1) \<br />

func((a1), VARARG_MAGIC)<br />

#define VARARG_CALL_2(func, a1, a2) \<br />

func((a1), (a2), VARARG_MAGIC)<br />

#define VARARG_CALL_3(func, a1, a2, a3) \<br />

func((a1), (a2), (a3), VARARG_MAGIC)<br />

#define VARARG_CALL_4(func, a1, a2, a3, a4) \<br />

func((a1), (a2), (a3), (a4), VARARG_MAGIC)<br />

#define VARARG_CALL_5(func, a1, a2, a3, a4, a5) \<br />

func((a1), (a2), (a3), (a4), (a5), VARARG_MAGIC)<br />

#define VARARG_CALL_6(func, a1, a2, a3, a4, a5, a6) \<br />

func((a1), (a2), (a3), (a4), (a5), (a6), VARARG_MAGIC)<br />

#define VARARG_CALL_7(func, a1, a2, a3, a4, a5, a6, a7) \<br />

func((a1), (a2), (a3), (a4), (a5), (a6), (a7), VARARG_MAGIC)<br />

#define VARARG_CALL_8(func, a1, a2, a3, a4, a5, a6, a7, a8) \<br />

func((a1), (a2), (a3), (a4), (a5), (a6), (a7), (a8), VARARG_MAGIC)<br />

#endif<br />

710 | Chapter 13: Other Topics<br />

This is the Title of the Book, eMatter Edition<br />

Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!