我最近一直在尝试 boost::function_types 库,但遇到了一些问题。我想找出给定函数的调用约定,但是我不太确定如何做到这一点。这是我到目前为止所拥有的:
这会产生一个关于如何在每个 if 语句中找不到 *_cc 标记值的错误。我怀疑这可能与我定义宏的方式有关;该文档对如何使用编译器设置额外的调用约定不是很清楚......这里的任何帮助将不胜感激。
谢谢,
编辑:让它工作,似乎我需要包含 config/config.hpp,如下所示:
#define BOOST_FT_COMMON_X86_CCs 1
#include <boost/function_types/config/config.hpp>
#include <boost/type_traits.hpp>
#include <boost/function_types/property_tags.hpp>
#include <boost/function_types/is_function.hpp>
#include <boost/function_types/is_function_pointer.hpp>
#include <boost/function_types/parameter_types.hpp>
#include <boost/function_types/result_type.hpp>
#include <boost/function_types/function_arity.hpp>
template<class F>
inline void parse_cc(F f, func_info_s& out) {
out.cc = cc_err;
if (boost::function_types::is_function<F, stdcall_cc>::value == true) {
out.cc = cc_stdcall;
} else if (boost::function_types::is_function<F, fastcall_cc>::value == true) {
out.cc = cc_fastcall;
} else if (boost::function_types::is_function<F, cdecl_cc>::value == true) {
out.cc = cc_cdecl;
}
}