This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 将指针强制转换为函数

Guru**** 2348500 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1249641/casting-pointer-to-function

您好!

我使用的是 TI clang v2.1.2.LTS  

我有一个课程       CbADC_器件         具有成员函数   public:  uint32 OpenSetCb (uint32_t){}

我正在尝试创建一个指向该功能的指针、

 #包含
使用 FunctionPtrType = int32_t (CbADC_Device::::*)(uint32_t);
FunctionPtrType funcPtr =&CbADC_Device::OpenSetCb;
void* ptr =(void*)(funcPtr);===================  错误

正在获取 clang 错误

 错误:无法初始化类型为"void *"的变量,其左值为"FunctionPtrType"(也称为"int32_t (CbADC_Device::*)(uint32_t))

已尝试重新解释 cast -同时出错  

如何获取函数的 void * ptr?

请提供建议

谢谢。

Eli

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    指向成员函数的指针是 C++中较为复杂的部分之一。  请参阅 此常见问题解答 (不是来自 TI)。

    谢谢。此致、

    -乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、George、

    我明白这篇文章。

    我看到当前的设计 打破了 C++,但我有一个大项目编译 GCC ,我尝试编译 clang 与 TI SDK 示例.

    此时我无法重新设计整个"回调机制"。

    我正在寻找类似 GCC #pragma 忽略 GCC 诊断的解决方案

    -Wpmf-conversion[将指针类型转换为成员函数时发出警告] 

    我使用的是 clang v2.1.2LTS 是否有较新版本支持此特定 pragma?

    除了重新设计项目外,还有其他方法吗?

    谢谢。
    Eli

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    核心问题是 蒂亚姆克朗 (我认为这适用于所有 clang 编译器)将任何尝试将 pointer-to-member-function 更改为 void pointer 或反之将其分类为错误。  无错误无法更改为警告。  可以忽略一个警告、而不是一个错误。  不幸的是,我无法找到任何办法来解决这一中心问题。

    谢谢。此致、

    -乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢!