检查函数指针类型的调用约定
如何在编译时检查函数指针是否具有 __stdcall 调用约定?
类似
void foo() {}
static_assert(is_stdcall<decltype(&foo)>::value, "foo() must be stdcall");
或至少
must_be_stdcall<T>(); // compiler error or warning if not stdcall
How to check at compile-time that function pointer has the __stdcall
calling convention?
Something like
void foo() {}
static_assert(is_stdcall<decltype(&foo)>::value, "foo() must be stdcall");
or at least
must_be_stdcall<T>(); // compiler error or warning if not stdcall
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
MSVC 有 C4440 编译器警告:
它可能是
typedef decltype (foo) __stdcall* T;
其中foo
是一个函数(注意,应该是foo
,而不是&foo
),但它不适用于静态成员函数。MSVC has the C4440 compiler warning:
It may be
typedef decltype(foo) __stdcall* T;
wherefoo
is a function (note, that there should befoo
, not&foo
), but it doesn't works with static member functions.