blob: 4b713effc650ab357272cc0d619302219ed702d1 [file] [log] [blame]
[email protected]dce5df52009-06-29 17:58:251// Copyright (c) 2009 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef BASE_FORMAT_MACROS_H_
6#define BASE_FORMAT_MACROS_H_
7
8// This file defines the C99 format macros for 64-bit values. If you wish to
9// print a 64-bit value in a portable way do:
10// int64_t value;
11// printf("xyz:%" PRId64, value);
12//
13// For wide strings, prepend "Wide" to the macro:
14// int64_t value;
15// StringPrintf(L"xyz: %" WidePRId64, value);
16
17#include "build/build_config.h"
18
19#if defined(OS_POSIX)
20
21#if (defined(_INTTYPES_H) || defined(_INTTYPES_H_)) && !defined(PRId64)
22#error "inttypes.h has already been included before this header file, but "
23#error "without __STDC_FORMAT_MACROS defined."
24#endif
25
26#if !defined(__STDC_FORMAT_MACROS)
27#define __STDC_FORMAT_MACROS
28#endif
29
30#include <inttypes.h>
31
32// GCC will concatenate wide and narrow strings correctly, so nothing needs to
33// be done here.
34#define WidePRId64 PRId64
35#define WidePRIu64 PRIu64
36#define WidePRIx64 PRIx64
37
38#else // OS_WIN
39
40#define PRId64 "I64d"
41#define PRIu64 "I64u"
42#define PRIx64 "I64x"
43
44#define WidePRId64 L"I64d"
45#define WidePRIu64 L"I64u"
46#define WidePRIx64 L"I64x"
47
48#endif
49
50#endif // !BASE_FORMAT_MACROS_H_