草庐IT

MYLIB_FUNCTION_ATTRIBUTE

全部标签

c++ - 我应该如何在 C++ 的类方法中正确使用 __attribute__ ((format (printf, x, y)))?

我正在尝试为调试打印定义一个类方法,其行为类似于printf:inlinevoiddebug(constchar*fmt,...)__attribute__((format(printf,1,2)))当我用-Wformat或-Wall编译时,这提示:error:formatstringargumentnotastringtype我记得一个类方法声明有一个隐含的this参数,所以我把参数的位置改成了2、3:inlinevoiddebug(constchar*fmt,...)__attribute__((format(printf,2,3)))现在它可以编译了,但看起来参数被移动了,好像t

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;

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;

c++ - 在 C++17 中使用 noexcept 的 std::function

在C++17中noexcepthasbeenaddedtothetypesystem:voidr1(void(*f)()noexcept){f();}voidfoo(){throw1;}intmain(){r1(foo);}最新版本的C++17模式的GCC和Clang拒绝调用r1(foo),因为void(*)()不能隐式转换为void(*)()noexcept.但是对于std::function而是:#includevoidr2(std::functionf){f();}voidfoo(){throw1;}intmain(){r2(foo);}Clang接受程序,显然忽略了noexce

c++ - 在 C++17 中使用 noexcept 的 std::function

在C++17中noexcepthasbeenaddedtothetypesystem:voidr1(void(*f)()noexcept){f();}voidfoo(){throw1;}intmain(){r1(foo);}最新版本的C++17模式的GCC和Clang拒绝调用r1(foo),因为void(*)()不能隐式转换为void(*)()noexcept.但是对于std::function而是:#includevoidr2(std::functionf){f();}voidfoo(){throw1;}intmain(){r2(foo);}Clang接受程序,显然忽略了noexce

c++ - __attribute__((format(printf, 1, 2))) 用于 MSVC?

使用GCC,我可以指定__attribute__((format(printf,1,2))),告诉编译器该函数采用printf格式说明符的可变参数。这在我包装的情况下非常有用,例如vsprintf函数族。我可以有externvoidlog_error(constchar*format,...)__attribute__((format(printf,1,2)));每当我调用这个函数时,gcc将检查参数的类型和数量是否符合给定的格式说明符,就像它检查printf一样,如果不符合,则发出警告。MicrosoftC/C++编译器有类似的吗? 最佳答案