MFC 消息映射中的函数地址
Function addresses in MFC message maps
为什么类向导生成的消息映射中的函数地址是用明确提及的类的名称编写的?
例如:
ON_BN_CLICKED(IDC_CHECK1, &CMyDlg::OnClickedSomeButton)
而不是:
ON_BN_CLICKED(IDC_CHECK1, &OnClickedSomeButton)
甚至:
ON_BN_CLICKED(IDC_CHECK1, OnClickedSomeButton)
所有三个变体都可以正确编译。
这只是好奇心。
所有三个变体都可以正确编译。
是的,它们编译正确...在 MSVC 上。如果您尝试在 Clang(Microsoft兼容模式(中编译第二个或第三个示例,则会出现错误。
ON_BN_CLICKED(IDC_CHECK1, &OnClickedSomeButton)
产量Clang : must explicitly qualify name of member function when taking its address
ON_BN_CLICKED(IDC_CHECK1, OnClickedSomeButton)
产量Clang : call to non-static member function without an object argument
不想发布 MSVC 编译的二进制文件以外的其他形式,坚持使用第一种形式肯定更好 - 您可能希望使用需要 clang 编译的 clang tidy 等工具。它也是传递成员函数指针的唯一C++符合标准的方法。另外两个通过Microsoft的扩展工作。
相关文章:
- 为什么成员函数地址离自由函数这么远?
- MFC 消息映射中的函数地址
- 设置成员 GlobalCEFApp->OnWebKit使用函数地址初始化 C++生成器
- 在Visual C 中找到调用函数地址(安全)
- 获取函数地址时出现奇怪行为
- 函数地址
- 如何在C++中打印成员函数地址
- 为什么函数指针、函数地址和函数相同
- 匹配布尔值与常量 void* 重载的函数地址
- 函数地址和函数地址的地址没有区别吗?
- 在 Linux 库中查找静态函数地址
- 调用传递给 gcc 内联汇编器 (avr-gcc) 的 const 函数地址
- 使用32位应用程序从64位kernel32.dll获取函数地址
- 为什么函数地址不是常量表达式
- 将函数地址转换为 64 位整数:未定义/行为不当
- Visual Studio在打印函数地址时出错
- 获取有关函数地址的信息
- 通过函数地址调用另一个类的函数
- 打印成员函数地址的最简单方法是什么?
- 圆括号成员函数地址错误