compiler.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 117 行

HPP
117
字号
// (C) Copyright Tobias Schwinger//// Use modification and distribution are subject to the boost Software License,// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).//------------------------------------------------------------------------------#ifndef BOOST_FT_CONFIG_COMPILER_HPP_INCLUDED#define BOOST_FT_CONFIG_COMPILER_HPP_INCLUDED#include <boost/config.hpp>#include <boost/detail/workaround.hpp>#if defined(BOOST_MSVC)#   if BOOST_MSVC < 1310#     error "unsupported compiler version"#   endif#   ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS      // enable clrcall calling covention (call to .NET managed code) when      // compiling with /clr #     if BOOST_MSVC >= 1400 && defined(__cplusplus_cli)#       ifndef BOOST_FT_CC_CLRCALL#       define BOOST_FT_CC_CLRCALL callable_builtin#       endif#     endif      // Intel x86 architecture specific calling conventions#     ifdef _M_IX86#       define BOOST_FT_COMMON_X86_CCs callable_builtin#       if BOOST_MSVC < 1400          // version 7.1 is missing a keyword to specify the thiscall cc ...#         ifndef BOOST_FT_CC_IMPLICIT_THISCALL#         define BOOST_FT_CC_IMPLICIT_THISCALL non_variadic|member|callable_builtin#         ifndef BOOST_FT_CONFIG_OK#           pragma message("INFO| /Gd /Gr /Gz will compiler options will cause")#           pragma message("INFO| a compile error.")#           pragma message("INFO| Reconfigure Boost.FunctionTypes in this case.")#           pragma message("INFO| This message can be suppressed by defining")#           pragma message("INFO| BOOST_FT_CONFIG_OK.")#         endif#         endif#       else           // ...introduced in version 8#         ifndef BOOST_FT_CC_THISCALL#         define BOOST_FT_CC_THISCALL non_variadic|member|callable_builtin#         endif#       endif#     endif#   endif#elif defined(__GNUC__) && !defined(BOOST_INTEL_LINUX)#   if __GNUC__ < 3#     error "unsupported compiler version"#   endif#   ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS#     if defined(__i386__)#       // see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20439#       // see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29328#       if BOOST_WORKAROUND(__GNUC__,BOOST_TESTED_AT(4))#         ifndef BOOST_FT_CC_IMPLICIT #         define BOOST_FT_CC_IMPLICIT member|callable_builtin#         endif#         define BOOST_FT_COMMON_X86_CCs non_member|callable_builtin#       else#         define BOOST_FT_COMMON_X86_CCs callable_builtin#       endif#     else#       ifndef BOOST_FT_CC_IMPLICIT#       define BOOST_FT_CC_IMPLICIT callable_builtin#       endif#     endif#   endif#   if (defined(BOOST_FT_CC_CDECL) || defined(BOOST_FT_COMMON_X86_CCs)) \        && !defined(__cdecl)#     define __cdecl __attribute__((__cdecl__))#   endif#   if (defined(BOOST_FT_CC_STDCALL) || defined(BOOST_FT_COMMON_X86_CCs)) \        && !defined(__stdcall)#     define __stdcall __attribute__((__stdcall__))#   endif#   if (defined(BOOST_FT_CC_FASTCALL) || defined(BOOST_FT_COMMON_X86_CCs)) \        && !defined(__fastcall)#     define __fastcall __attribute__((__fastcall__))#   endif#elif defined(__BORLANDC__)#   if __BORLANDC__ < 0x550#     error "unsupported compiler version"#   elif __BORLANDC__ > 0x565#     pragma message("WARNING: library untested with this compiler version")#   endif#   ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS#     define BOOST_FT_COMMON_X86_CCs callable_builtin#   endif    // syntactic specialities of cc specifier#   define BOOST_FT_SYNTAX(result,lparen,cc_spec,type_mod,name,rparen) \                        result() cc_spec() lparen() type_mod() name() rparen()#else    // only enable default calling convention#   define BOOST_FT_CC_IMPLICIT callable_builtin#endif#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?