1// Copyright (c) 2010 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// 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_ 32