Files
MentOS/libc/inc/stdarg.h
T
Enrico Fraccaroli (Galfurian) 30e01ba560 Update version
2024-01-17 13:49:48 +01:00

28 lines
995 B
C

/// @file stdarg.h
/// @brief Contains the macros required to manage variable number of arguments.
/// @copyright (c) 2014-2024 This file is distributed under the MIT License.
/// See LICENSE.md for details.
#pragma once
/// @brief The va_list type is an array containing a single element of one
/// structure containing the necessary information to implement the
/// va_arg macro.
typedef char *va_list;
/// @brief The type of the item on the stack.
#define va_item int
/// @brief Amount of space required in an argument list (ie. the stack) for an
/// argument of type t.
#define va_size(t) \
(((sizeof(t) + sizeof(va_item) - 1) / sizeof(va_item)) * sizeof(va_item))
/// @brief The start of a variadic list.
#define va_start(ap, last_arg) (ap = ((va_list)(&last_arg) + va_size(last_arg)))
/// @brief The end of a variadic list.
#define va_end(ap) ((void)0)
/// @brief The argument of a variadic list.
#define va_arg(ap, t) (ap += va_size(t), *((t *)(ap - va_size(t))))