/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file.
// Per C99 7.8.14, define __STDC_CONSTANT_MACROS before including <stdint.h> // to get the INTn_C and UINTn_C macros for integer constants. It's difficult // to guarantee any specific ordering of header includes, so it's difficult to // guarantee that the INTn_C macros can be defined by including <stdint.h> at // any specific point. Provide GG_INTn_C macros instead.
// It's possible for functions that use a va_list, such as StringPrintf, to // invalidate the data in it upon use. The fix is to make a copy of the // structure before using it and use that copy instead. va_copy is provided // for this purpose. MSVC does not provide va_copy, so define an // implementation here. It is not guaranteed that assignment is a copy, so the // StringUtil.VariableArgsFunc unit test tests this capability.
// The C standard says that va_copy is a "macro", not a function. Trying to // use va_list as ref args to a function, as above, breaks some machines. #ifdefined(__GNUC__) # define base_va_copy(_a, _b) ::va_copy(_a, _b) #elifdefined(_MSC_VER) # define base_va_copy(_a, _b) (_a = _b) #else # error No va_copy for your compiler #endif
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.