| Index: src/base/compiler-specific.h
|
| diff --git a/src/base/compiler-specific.h b/src/base/compiler-specific.h
|
| index 822893ffecf073924c03cfcef70760fc4f0cdde6..1858caa047136adb2f2c0e75490918673481741c 100644
|
| --- a/src/base/compiler-specific.h
|
| +++ b/src/base/compiler-specific.h
|
| @@ -60,4 +60,46 @@
|
| #define STATIC_CONST_MEMBER_DEFINITION
|
| #endif
|
|
|
| +#if V8_CC_MSVC
|
| +
|
| +#include <sal.h>
|
| +
|
| +// Macros for suppressing and disabling warnings on MSVC.
|
| +//
|
| +// Warning numbers are enumerated at:
|
| +// http://msdn.microsoft.com/en-us/library/8x5x43k7(VS.80).aspx
|
| +//
|
| +// The warning pragma:
|
| +// http://msdn.microsoft.com/en-us/library/2c8f766e(VS.80).aspx
|
| +//
|
| +// Using __pragma instead of #pragma inside macros:
|
| +// http://msdn.microsoft.com/en-us/library/d9x1s805.aspx
|
| +
|
| +// MSVC_SUPPRESS_WARNING disables warning |n| for the remainder of the line and
|
| +// for the next line of the source file.
|
| +#define MSVC_SUPPRESS_WARNING(n) __pragma(warning(suppress : n))
|
| +
|
| +// Allows exporting a class that inherits from a non-exported base class.
|
| +// This uses suppress instead of push/pop because the delimiter after the
|
| +// declaration (either "," or "{") has to be placed before the pop macro.
|
| +//
|
| +// Example usage:
|
| +// class EXPORT_API Foo : NON_EXPORTED_BASE(public Bar) {
|
| +//
|
| +// MSVC Compiler warning C4275:
|
| +// non dll-interface class 'Bar' used as base for dll-interface class 'Foo'.
|
| +// Note that this is intended to be used only when no access to the base class'
|
| +// static data is done through derived classes or inline methods. For more info,
|
| +// see http://msdn.microsoft.com/en-us/library/3tdb471s(VS.80).aspx
|
| +#define NON_EXPORTED_BASE(code) \
|
| + MSVC_SUPPRESS_WARNING(4275) \
|
| + code
|
| +
|
| +#else // Not MSVC
|
| +
|
| +#define MSVC_SUPPRESS_WARNING(n)
|
| +#define NON_EXPORTED_BASE(code) code
|
| +
|
| +#endif // V8_CC_MSVC
|
| +
|
| #endif // V8_BASE_COMPILER_SPECIFIC_H_
|
|
|