Adds a new macro simplifying use of snprinf on MS platforms.
This commit is contained in:
parent
1b2e509958
commit
f7d58e81c3
|
@ -1682,6 +1682,23 @@ inline void Abort() { abort(); }
|
||||||
|
|
||||||
} // namespace posix
|
} // namespace posix
|
||||||
|
|
||||||
|
// MSVC "deprecates" snprintf and issues warnings wherever it is used. In
|
||||||
|
// order to avoid these warnings, we need to use _snprintf or _snprintf_s on
|
||||||
|
// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate
|
||||||
|
// function in order to achieve that. We use macro definition here because
|
||||||
|
// snprintf is a variadic function.
|
||||||
|
#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE
|
||||||
|
// MSVC 2005 and above support variadic macros.
|
||||||
|
# define GTEST_SNPRINTF_(buffer, size, format, ...) \
|
||||||
|
_snprintf_s(buffer, size, size, format, __VA_ARGS__)
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't
|
||||||
|
// complain about _snprintf.
|
||||||
|
# define GTEST_SNPRINTF_ _snprintf
|
||||||
|
#else
|
||||||
|
# define GTEST_SNPRINTF_ snprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
// The maximum number a BiggestInt can represent. This definition
|
// The maximum number a BiggestInt can represent. This definition
|
||||||
// works no matter BiggestInt is represented in one's complement or
|
// works no matter BiggestInt is represented in one's complement or
|
||||||
// two's complement.
|
// two's complement.
|
||||||
|
|
|
@ -55,14 +55,6 @@ namespace {
|
||||||
|
|
||||||
using ::std::ostream;
|
using ::std::ostream;
|
||||||
|
|
||||||
#if GTEST_OS_WINDOWS_MOBILE // Windows CE does not define _snprintf_s.
|
|
||||||
# define snprintf _snprintf
|
|
||||||
#elif _MSC_VER >= 1400 // VC 8.0 and later deprecate snprintf and _snprintf.
|
|
||||||
# define snprintf _snprintf_s
|
|
||||||
#elif _MSC_VER
|
|
||||||
# define snprintf _snprintf
|
|
||||||
#endif // GTEST_OS_WINDOWS_MOBILE
|
|
||||||
|
|
||||||
// Prints a segment of bytes in the given object.
|
// Prints a segment of bytes in the given object.
|
||||||
void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
|
void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
|
||||||
size_t count, ostream* os) {
|
size_t count, ostream* os) {
|
||||||
|
@ -77,7 +69,7 @@ void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
|
||||||
else
|
else
|
||||||
*os << '-';
|
*os << '-';
|
||||||
}
|
}
|
||||||
snprintf(text, sizeof(text), "%02X", obj_bytes[j]);
|
GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]);
|
||||||
*os << text;
|
*os << text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user