ansiStdarg.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:4k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* ansiStdarg.c - ANSI `stdarg' documentation */
  2. /* Copyright 1984-1993 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01b,16mar93,jdi  documentation cleanup for 5.1.
  7. 01a,24oct92,smb  written.
  8. */
  9. /*
  10. DESCRIPTION
  11. The header stdarg.h declares a type and defines three macros for advancing
  12. through a list of arguments whose number and types are not known to the
  13. called function when it is translated.
  14. A function may be called with a variable number of arguments of varying types.
  15. The rightmost parameter plays a special role in the access mechanism, and
  16. is designated <parmN> in this description.
  17. The type declared is:
  18. .iP `va_list' 12
  19. a type suitable for holding information needed by the macros
  20. va_start(), va_arg(), and va_end().
  21. .LP
  22. To access the varying arguments, the called function shall declare an object
  23. having type `va_list'.  The object (referred to here as <ap>) may be
  24. passed as an argument to another function; if that function invokes the
  25. va_arg() macro with parameter <ap>, the value of <ap> in the calling
  26. function is indeterminate and is passed to the va_end() macro prior
  27. to any further reference to <ap>.
  28. va_start() and va_arg() have been implemented as macros, not as
  29. functions.  The va_start() and va_end() macros should be invoked in the
  30. function accepting a varying number of arguments, if access to the varying
  31. arguments is desired.
  32. The use of these macros is documented here as if they were architecture-generic.
  33. However, depending on the compilation environment, different macro versions are
  34. included by vxWorks.h.
  35. SEE ALSO: American National Standard X3.159-1989
  36. */   
  37. /*******************************************************************************
  38. *
  39. * va_start - initialize a `va_list' object for use by va_arg() and va_end()
  40. * This macro initializes an object of type `va_list' (<ap>) for subsequent
  41. * use by va_arg() and va_end().  The parameter <parmN> is the identifier of
  42. * the rightmost parameter in the variable parameter list in the function
  43. * definition (the one just before the , ...).  If <parmN> is declared with
  44. * the register storage class with a function or array type, or with a type
  45. * that is not compatible with the type that results after application of the
  46. * default argument promotions, the behavior is undefined.
  47. * RETURNS: N/A
  48. */
  49. void va_start
  50.     (
  51.     ap, /* list of type va_list */
  52.     parmN /* rightmost parameter */
  53.     )
  54.     {
  55.     /* dummy function for documenation purposes */
  56.     }
  57. /*******************************************************************************
  58. *
  59. * va_arg - expand to an expression having the type and value of the call's next argument
  60. * Each invocation of this macro modifies an object of type `va_list' (<ap>)
  61. * so that the values of successive arguments are returned in turn.  The
  62. * parameter <type> is a type name specified such that the type of a pointer
  63. * to an object that has the specified type can be obtained simply by
  64. * postfixing a * to <type>.  If there is no actual next argument, or if
  65. * <type> is not compatible with the type of the actual next argument (as
  66. * promoted according to the default argument promotions), the behavior is
  67. * undefined.
  68. * RETURNS:
  69. * The first invocation of va_arg() after va_start() returns the value of the
  70. * argument after that specified by <parmN> (the rightmost parameter).
  71. * Successive invocations return the value of the remaining arguments in
  72. * succession.
  73. */
  74. void va_arg
  75.     (
  76.     ap, /* list of type va_list */
  77.     type /* type */
  78.     )
  79.     {
  80.     /* dummy function for documenation purposes */
  81.     }
  82. /*******************************************************************************
  83. *
  84. * va_end - facilitate a normal return from a routine using a `va_list' object
  85. *
  86. * This macro facilitates a normal return from the function whose variable
  87. * argument list was referred to by the expansion of va_start() that
  88. * initialized the `va_list' object.
  89. * va_end() may modify the `va_list' object so that it is no longer
  90. * usable (without an intervening invocation of va_start()).  If there is no
  91. * corresponding invocation of the va_start() macro, or if the va_end() macro
  92. * is not invoked before the return, the behavior is undefined.
  93. * RETURNS: N/A
  94. */
  95. void va_end
  96.     (
  97.     ap /* list of type va_list */
  98.     )
  99.     {
  100.     /* dummy function for documenation purposes */
  101.     }