c - 在 C/C++ 中获取函数内部的函数地址?
问题描述
我试图返回我调用的函数的地址,例如:
void * myfunctionname(some parameters) {
//some codes
//more codes.
return &myfunctionname;
}
如何用void *
正确的类型替换以获得正确的签名?
解决方案
问题是要有正确的返回类型,它是“递归的”,因为它包含自己。
据我所知,拥有“递归”类型的唯一方法是使用struct或union,所以
struct SFunc
{
struct SFunc (*pf)(int param);
};
struct SFunc myfunctionname(int param)
{
struct SFunc s;
s.pf = myfunctionname;
return s;
}
或者
union UFunc
{
union UFunc (*pf)(int param);
};
union UFunc myfunctionname(int param)
{
union UFunc u;
u.pf = myfunctionname;
return u;
}
编译(两种方式相同):
pi@raspberrypi:/tmp $ gcc -c -Wall -pedantic cc.c
pi@raspberrypi:/tmp $ g++ -c -Wall -pedantic cc.cc
pi@raspberrypi:/tmp $
推荐阅读
- apache-spark - 基于 Spark Scala 中的 3 个场景在 Hive 表中插入/更新记录
- javascript - 如何在 jQuery 中单击四次后禁用按钮?
- python - Django 表单需要条件,错误消息放置
- c# - 将 wcf 服务配置保存在单独的文件 RRS 提要中
- octave - 错误:水平尺寸不匹配(4x4 与 1x4)
- javascript - 简化 Javascript 中的模式匹配
- python - 使用 Scikit-Learn 在 RegressorChain 上进行 GridSearch?
- php - 缺少一些强制参数(“用户”)以在 drupal 8 中生成路由的 URL
- javascript - Node.js:复制 csv 时文件大小的差异
- javascript - Woocommerce 功能检查用户是否购买了产品,然后使用 javascript 重定向到特定页面