blob: 355aee38fdec2081b66eb42b45f0d98c18e58702 [file] [log] [blame]
Avi Drissmane4622aa2022-09-08 20:36:061// Copyright 2010 The Chromium Authors
[email protected]8edbebd2013-01-31 19:45:022// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4//
5// This file defines preprocessor macros for stringizing preprocessor
6// symbols (or their output) and manipulating preprocessor symbols
7// that define strings.
8
9#ifndef BASE_STRINGS_STRINGIZE_MACROS_H_
10#define BASE_STRINGS_STRINGIZE_MACROS_H_
11
12#include "build/build_config.h"
13
14// This is not very useful as it does not expand defined symbols if
15// called directly. Use its counterpart without the _NO_EXPANSION
16// suffix, below.
17#define STRINGIZE_NO_EXPANSION(x) #x
18
19// Use this to quote the provided parameter, first expanding it if it
20// is a preprocessor symbol.
21//
22// For example, if:
23// #define A FOO
24// #define B(x) myobj->FunctionCall(x)
25//
26// Then:
27// STRINGIZE(A) produces "FOO"
28// STRINGIZE(B(y)) produces "myobj->FunctionCall(y)"
29#define STRINGIZE(x) STRINGIZE_NO_EXPANSION(x)
30
31#endif // BASE_STRINGS_STRINGIZE_MACROS_H_