草庐IT

T_OLD_FUNCTION

全部标签

c++ - __FILE__ 、 __LINE__ 和 __PRETTY_FUNCTION__ 的 Visual C++ 等效项

GCC编译器为我提供了以下宏:__FILE__这样我就可以打印出文件名+目录了。__LINE__这样我就可以打印出我正在打印的行号。__PRETTY_FUNCTION__这样我就可以打印出漂亮的函数名了VisualC++是否有这些宏的等价物?附带的问题是,这些是C++编译器的标准吗? 最佳答案 在VS2008中,这个:structA{boolTest(intiDummyArg){constchar*szFile=__FILE__;intiLine=__LINE__;constchar*szFunc=__FUNCTION__;//Fu

c++ - 通过 std::function 引用仿函数

基本上,我希望有以下语义:#include#includeclasstest{public:voidadd(std::functionf){f();}voidoperator()(){++x;}intx=33;};intmain(){testt;t.add(t);//wanted:x==34instead:x==33sinceadd(t)copiesit}我了解std::function包装了可调用对象的拷贝,但有没有办法使用std::function获取对可调用对象的引用? 最佳答案 您想使用std::ref模板函数创建refer

c++ - 通过 std::function 引用仿函数

基本上,我希望有以下语义:#include#includeclasstest{public:voidadd(std::functionf){f();}voidoperator()(){++x;}intx=33;};intmain(){testt;t.add(t);//wanted:x==34instead:x==33sinceadd(t)copiesit}我了解std::function包装了可调用对象的拷贝,但有没有办法使用std::function获取对可调用对象的引用? 最佳答案 您想使用std::ref模板函数创建refer

c++ - 我可以从 C 调用 std::function 吗?

我有一些返回std::function的C++代码。我想从一些C代码中调用它。这可能吗?例如,我有以下代码:typedefstd::functionAdderFunction;AdderFunctionmakeAdder(intamount){return[amount](intn){returnn+amount;};}extern"C"{AdderFunctionmakeCAdder(intamount){returnmakeAdder(amount);}}使用clang++-std=c++11test.cpp会导致以下警告:'makeCAdder'hasC-linkagespeci

c++ - 我可以从 C 调用 std::function 吗?

我有一些返回std::function的C++代码。我想从一些C代码中调用它。这可能吗?例如,我有以下代码:typedefstd::functionAdderFunction;AdderFunctionmakeAdder(intamount){return[amount](intn){returnn+amount;};}extern"C"{AdderFunctionmakeCAdder(intamount){returnmakeAdder(amount);}}使用clang++-std=c++11test.cpp会导致以下警告:'makeCAdder'hasC-linkagespeci

c# - "Unable to find an entry point named [function] in dll"(c++到c#类型转换)

我有一个来自第三方的dll,它是用C++编写的。以下是来自dll文档的一些信息://startdocumentationRECO_DATA{wchar_tSurname[200];wchar_tFirstname[200];}说明:接收函数结果的数据结构。所有函数结果将是存储为Unicode(UTF-8)。方法:boolrecoCHN_P_Name(char*imgPath,RECO_DATA*o_data);输入:char*imgPath此图像位置的完整路径识别功能RECO_DATA*o_data接收函数的数据对象结果。函数返回:成功则返回true,否则返回false。//enddo

c# - "Unable to find an entry point named [function] in dll"(c++到c#类型转换)

我有一个来自第三方的dll,它是用C++编写的。以下是来自dll文档的一些信息://startdocumentationRECO_DATA{wchar_tSurname[200];wchar_tFirstname[200];}说明:接收函数结果的数据结构。所有函数结果将是存储为Unicode(UTF-8)。方法:boolrecoCHN_P_Name(char*imgPath,RECO_DATA*o_data);输入:char*imgPath此图像位置的完整路径识别功能RECO_DATA*o_data接收函数的数据对象结果。函数返回:成功则返回true,否则返回false。//enddo

c++ - 到 std::function<R(ARGS...)> 的可变参数模板转换适用于 GCC 而不是 MSVC2013,为什么?

如果这是重复的,我很抱歉。但我在搜索中找不到任何内容。我可以使用c++11/c++14的任何最新功能。如有必要,我可以升级到VS2015。我正在尝试编写一个类,该类在分配时将自动转换为具有特定签名的std::function。我有适用于GCC的代码,但在MSVC2013上失败了。该代码是重新创建错误的片段。WTFMSVC?!我也知道这是有风险的代码,自动转换函数指针等,但它是用于插件库的私有(private)实现,我只想定义一次函数签名。如果有另一种方法可以编写代码,在main()中完成相同的功能并同时在两者上工作,我会全力以赴。GCCc++11工作正常-Demo#include#in

c++ - 到 std::function<R(ARGS...)> 的可变参数模板转换适用于 GCC 而不是 MSVC2013,为什么?

如果这是重复的,我很抱歉。但我在搜索中找不到任何内容。我可以使用c++11/c++14的任何最新功能。如有必要,我可以升级到VS2015。我正在尝试编写一个类,该类在分配时将自动转换为具有特定签名的std::function。我有适用于GCC的代码,但在MSVC2013上失败了。该代码是重新创建错误的片段。WTFMSVC?!我也知道这是有风险的代码,自动转换函数指针等,但它是用于插件库的私有(private)实现,我只想定义一次函数签名。如果有另一种方法可以编写代码,在main()中完成相同的功能并同时在两者上工作,我会全力以赴。GCCc++11工作正常-Demo#include#in

c++ - 使用 std::function 和 std::bind 时模板参数推导/替换失败

在模板化成员函数中使用std::function时出现编译错误,以下代码是一个简单示例:#include#includeusingstd::function;usingstd::bind;usingstd::shared_ptr;classTest{public:templatevoidsetCallback(functioncb);};templatevoidTest::setCallback(functioncb){//donothing}classTestA{public:voidtesta(inta,intb){}};intmain(){TestAtestA;Testtest;