acl  3.5.3.0
snprintf.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include <stdarg.h>
4 
5 namespace acl {
6 
7 /**
8  * 标准 C snprintf API 封装,可以保证结果缓冲区中的最后一个字节为 '\0'
9  * @param buf {char*} 存储结果的缓冲区
10  * @param size {size_t} buf 缓冲区长度
11  * @param fmt {const char*} 变参格式字符串
12  * @return {int} 当缓冲区长度够用时返回实际拷贝的数据长度,否则:
13  * 1) UNIX/LINUX 平台下返回实际需要的缓冲区长度,即当缓冲区长度不够时返回值
14  * >= size;需要注意该返回值的含义与 _WIN32 下的不同
15  * 2) _WIN32 平台下返回 -1
16  */
17 #if defined(__GNUC__) && (__GNUC__ > 4 ||(__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
18 ACL_CPP_API int ACL_CPP_PRINTF(3, 4) safe_snprintf(char *buf, size_t size,
19  const char *fmt, ...);
20 #else
21 ACL_CPP_API int safe_snprintf(char *buf, size_t size, const char *fmt, ...);
22 #endif
23 
24 /**
25  * 标准 C snprintf API 封装,可以保证结果缓冲区中的最后一个字节为 '\0'
26  * @param buf {char*} 存储结果的缓冲区
27  * @param size {size_t} buf 缓冲区长度
28  * @param fmt {const char*} 变参格式字符串
29  * @param ap {va_list} 变参变量
30  * @return {int} 当缓冲区长度够用时返回实际拷贝的数据长度,否则:
31  * 1) UNIX/LINUX 平台下返回实际需要的缓冲区长度,即当缓冲区长度不够时返回值
32  * >= size;需要注意该返回值的含义与 _WIN32 下的不同
33  * 2) _WIN32 平台下返回 -1
34  */
35 ACL_CPP_API int safe_vsnprintf(char *buf, size_t size, const char *fmt, va_list ap);
36 
37 } // namespace acl
#define ACL_CPP_PRINTF(format_idx, arg_idx)
Definition: atomic.hpp:75
ACL_CPP_API int safe_snprintf(char *buf, size_t size, const char *fmt,...)
ACL_CPP_API int safe_vsnprintf(char *buf, size_t size, const char *fmt, va_list ap)
ACL_API void const char * fmt
Definition: acl_aio.h:771
#define ACL_CPP_API