UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VarArgs.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
6
7/*-----------------------------------------------------------------------------
8VarArgs helper macros.
9-----------------------------------------------------------------------------*/
10
11// phantom definitions to help VAX parse our VARARG_* macros (VAX build 1440)
12#ifdef VISUAL_ASSIST_HACK
13 #define VARARG_DECL( FuncRet, StaticFuncRet, Return, FuncName, Pure, FmtType, ExtraDecl, ExtraCall ) FuncRet FuncName( ExtraDecl FmtType Fmt, ... )
14 #define VARARG_BODY( FuncRet, FuncName, FmtType, ExtraDecl ) FuncRet FuncName( ExtraDecl FmtType Fmt, ... )
15#endif // VISUAL_ASSIST_HACK
16
17#define GET_TYPED_VARARGS(CharType, msg, msgsize, len, lastarg, fmt) \
18 { \
19 va_list ap; \
20 va_start(ap, lastarg); \
21 TCString<CharType>::GetVarArgs(msg, msgsize, fmt, ap); \
22 va_end(ap); \
23 }
24
25#define GET_VARARGS( msg, msgsize, len, lastarg, fmt) UE_DEPRECATED_MACRO(5.4, "GET_VARARGS(...) has been deprecated - please use GET_TYPED_VARARGS(TCHAR, ...) instead") GET_TYPED_VARARGS(TCHAR, msg, msgsize, len, lastarg, fmt)
26#define GET_VARARGS_WIDE(msg, msgsize, len, lastarg, fmt) UE_DEPRECATED_MACRO(5.4, "GET_VARARGS_WIDE(...) has been deprecated - please use GET_TYPED_VARARGS(WIDECHAR, ...) instead") GET_TYPED_VARARGS(WIDECHAR, msg, msgsize, len, lastarg, fmt)
27#define GET_VARARGS_ANSI(msg, msgsize, len, lastarg, fmt) UE_DEPRECATED_MACRO(5.4, "GET_VARARGS_ANSI(...) has been deprecated - please use GET_TYPED_VARARGS(ANSICHAR, ...) instead") GET_TYPED_VARARGS(ANSICHAR, msg, msgsize, len, lastarg, fmt)
28
29#define GET_TYPED_VARARGS_RESULT(CharType, msg, msgsize, len, lastarg, fmt, result) \
30 { \
31 va_list ap; \
32 va_start(ap, lastarg); \
33 result = TCString<CharType>::GetVarArgs(msg, msgsize, fmt, ap); \
34 if (result >= msgsize) \
35 { \
36 result = -1; \
37 } \
38 va_end(ap); \
39 }
40
41#define GET_VARARGS_RESULT( msg, msgsize, len, lastarg, fmt, result) UE_DEPRECATED_MACRO(5.4, "GET_VARARGS(...) has been deprecated - please use GET_TYPED_VARARGS(TCHAR, ...) instead") GET_TYPED_VARARGS_RESULT(TCHAR, msg, msgsize, len, lastarg, fmt, result)
42#define GET_VARARGS_RESULT_WIDE(msg, msgsize, len, lastarg, fmt, result) UE_DEPRECATED_MACRO(5.4, "GET_VARARGS_RESULT_WIDE(...) has been deprecated - please use GET_TYPED_VARARGS(WIDECHAR, ...) instead") GET_TYPED_VARARGS_RESULT(WIDECHAR, msg, msgsize, len, lastarg, fmt, result)
43#define GET_VARARGS_RESULT_ANSI(msg, msgsize, len, lastarg, fmt, result) UE_DEPRECATED_MACRO(5.4, "GET_VARARGS_RESULT_ANSI(...) has been deprecated - please use GET_TYPED_VARARGS(ANSICHAR, ...) instead") GET_TYPED_VARARGS_RESULT(ANSICHAR, msg, msgsize, len, lastarg, fmt, result)
44#define GET_VARARGS_RESULT_UTF8(msg, msgsize, len, lastarg, fmt, result) UE_DEPRECATED_MACRO(5.4, "GET_VARARGS_RESULT_UTF8(...) has been deprecated - please use GET_TYPED_VARARGS(UTF8CHAR, ...) instead") GET_TYPED_VARARGS_RESULT(UTF8CHAR, msg, msgsize, len, lastarg, fmt, result)
45
46/*-----------------------------------------------------------------------------
47Ugly VarArgs type checking (debug builds only).
48-----------------------------------------------------------------------------*/
49
50#define VARARG_EXTRA(...) __VA_ARGS__,
51#define VARARG_NONE
52#define VARARG_PURE =0