是否可以在 C++ 运行时动态创建函数?

2024-01-24

C++ 是一种静态的编译语言,模板在编译时解析等等......

但是是否有可能在运行时创建一个函数,该函数未在源代码中描述,并且在编译期间未转换为机器语言,以便用户可以向其抛出源代码中未预期的数据?

我知道这不可能以直接的方式发生,但肯定是可能的,有很多编程语言没有编译并动态创建用 C 或 C++ 实现的那种东西。

也许如果创建所有原始类型的工厂,以及合适的数据结构将它们组织成更复杂的对象(例如用户类型和函数),这是可以实现的吗?

欢迎提供有关该主题的任何信息以及在线材料的指示。谢谢!

编辑:我知道这是可能的,这更像是我对实现细节感兴趣:)


Yes, 当然,无需任何工具其他答案中提到过,但是只需使用 C++ 编译器.

只需在您的 C++ 程序中执行以下步骤(在 Linux 上,但在其他操作系统上必须类似)

  1. 使用以下命令将 C++ 程序写入文件(例如 /tmp/prog.cc)ofstream
  2. 通过编译程序system("c++ /tmp/prog.cc -o /tmp/prog.so -shared -fPIC");
  3. 动态加载程序,例如使用dlopen()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 C++ 运行时动态创建函数? 的相关文章

  • 双线性序列给出奇数结果

    我试图让我的表现技能 不存在 达到标准 但在将公式写入代码时遇到了问题 这是我试图将其引用为 转换 为代码的公式 考虑一个序列 u 其中 u 定义如下 号码u 0 1是第一个u 对于每个x in u then y 2 x 1 and z 3
  • 如何使用 ILoggerFactory 记录 Polly 的重试

    或者 如何从静态方法记录 From https github com App vNext Polly https github com App vNext Polly你有这样的例子 其中记录器神奇地可用 Policy Timeout 30
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 使用 JSON 格式正确配置 NLog 到 IHostBuilder

    我有以下代码 应该接受 NLog 的 JSON appsettings 配置 然后使用它来创建 NLog LogFactory 这个 NLog 工厂应该被传递到 MyService 类中 以便在那里创建一个记录器 class Program
  • 每次调用新方法时触发事件

    我正在做一个logger for a c 应用程序需要记录每个方法被调用的时间以及每个方法执行时间 我可以通过调用自己的方法来做到这一点EventLogger LogMethodCall方法在每个方法的开头 但我想知道是否有办法使CLR每次
  • 宏可以按参数数量重载吗?

    如何this https stackoverflow com q 9183993 153285工作 如何实现 C99 C 11 可变参数宏以仅根据为其提供多少个参数来扩展到不同的事物 编辑 请参阅末尾以获得现成的解决方案 要获得重载的宏 首
  • C++:将模板参数的模板类型成员添加为好友的正确语法?

    我有一个带有模板类型参数 tTRAIT 的类 我想加一个模板为好友type member aliastTRAIT 但我无法弄清楚语法 这可能吗 template
  • StreamReader,C#,peek

    我有一个 StreamReader 它偶尔会检查它是否有更多内容可以从简单的文本文件中读取 它使用 peek 属性 问题是 当我使用 peek 时 位置发生了变化 尽管不应该发生 FileStream m fsReader new File
  • 求一个数的因数。无法得到准确的结果

    有人可以帮助纠正我的算法吗 我已经对几个数字进行了测试 但它没有输出完整的因式分解 对于具有大量因子的数字 它完全失败 int num 20 for int i 2 i lt num i if num i 0 cout lt lt i lt
  • 是否有一种算法可以在线性时间内计算数组反转?

    我知道有多少倒转 en wikipedia org wiki Inversion 28discrete mathematics 29 in an n 元素数组可以在 O n log n 操作使用增强型归并排序 http www geeksf
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • C for 循环索引:新 CPU 中的前向索引更快吗?

    在我订阅的邮件列表上 两位知识渊博的 IMO 程序员正在讨论一些优化的代码 并说了以下内容 在 5 8 年前发布的 CPU 上 向后迭代 for 循环稍微快一些 e g for int i x 1 i gt 0 i 因为比较i归零比将其与其
  • 本地主机上的 .net HTTP_X_FORWARDED_FOR NULL

    抱歉 如果其他地方已经回答了这个问题 我找不到它 如果没有 我会尝试查找访问过该站点的机器的原始 IP 根据我的基本理解 变量HTTP X FORWARDED FOR无论代理和其他过滤器如何 都会显示用户的 IP 如果这是真的 我正在尝试对
  • 函数参数评估顺序[重复]

    这个问题在这里已经有答案了 在 C 和 C 中 函数参数的求值是否有固定的顺序 我的意思是 标准怎么说 是吗left to right or right to left 我从书中得到的信息令人困惑 是否有必要function call应该使
  • 捕获另一个进程未处理的异常

    我想知道我是否可以捕获我开始使用 Process Start 的另一个进程抛出的未处理的异常 我知道我可以用这个捕获标准错误link http social msdn microsoft com Forums en US csharpgen
  • 如何填充两个样条线或直线系列之间的区域

    我有这个Chart 如何填充两个之间的区域Series S0 and S1 说蓝色和黄色Series 为此 我们编写了其中之一Paint事件 这里的ValueToPixelPosition https msdn microsoft com
  • 将一个整数从 C 客户端发送到 Java 服务器

    我使用此代码将一个整数从我的 Java 客户端发送到我的 Java 服务器 int n rand nextInt 50 1 DataOutputStream dos new DataOutputStream socket getOutput
  • 数组与映射的性能

    我必须循环一个大数组中的元素子集 其中每个元素都指向另一个元素 问题来自于检测大图中的连接组件 我的算法如下 1 考虑第一个元素 2 将下一个元素视为前一个元素所指向的元素 3 循环直到没有发现新元素 4 考虑1 3中尚未考虑的下一个元素
  • TreeView:仅在子节点中存在复选框

    我需要一个树视图控件 根节点没有复选框 只有图像 所有子节点都有一个复选框 图像 C net 2 0 winforms 不是 wpf WinForms树视图默认不支持混合复选框 非复选框节点 您可以在树视图上全局启用复选框 并使用以下命令在
  • 获取会议组织者邮件地址 EWS API

    我想使用 EWS API 获取会议组织者的邮件地址 目前 我刚刚获得约会项目的一些属性 我听说你可以设置你想要获取哪些属性 我的代码看起来像这样 CalendarView cview new CalendarView start end c

随机推荐

  • EF Code First 提高自引用、一对多关系的性能

    我有一个AccountGroup这是一个自引用实体 一片树叶AccountGroup可以包含 1 个或多个Accounts 两个实体都有Balance财产 每个AccountGroup has a Balance这是Balance子组或总和
  • Visual Studio 调试模式与发布模式

    您好 我正在使用 Visual studio 2010 但我不明白一件事 我可以在发布模式和调试模式下调试和设置断点 那么两者有什么区别呢 区别在于编译器在发布模式下应用的优化 如果您有 PDB 文件 则可以放置断点 并且默认情况下即使在发
  • 外键作为主键

    我设计了这样的表格 table1 students PK id name number table2 students score PK FK student id math score english score 问题1 如果有的学生根本
  • Parsley.js - 在字段附近显示错误并在上面的组合列表中显示

    是否可以配置 Parsley js 以显示其错误消息 a 各个字段旁边 并且 b 在页面其他位置的组合列表中 同时 另外 是否可以使用返回生成错误的字段的超链接来呈现错误消息 Thanks UPDATE 接受的答案是一个很棒的例子 感谢 m
  • UIPopoverController 在“点击关闭”时关闭 - 如何检测此事件?

    我在导航栏上使用 UIPopover 我有几个 UIBarButtonItems 弹出窗口从其中之一扩展 当弹出窗口被激活时 我将按钮的样式更改为UIBarButtonItemStyleDone 但是 通过按预期点击 UIPopoverCo
  • AWS Lambda Python - 如何将模块从本地文件导入到app.py

    这是使用 Docker 容器进行的基于 SAM 模板的简单部署 文件系统结构 src app py mymodule py 在应用程序 py中 from mymodule import myfunction 结果 调用时 Unable to
  • NSString 字符位置

    NSString url http stackoverflow com questions ask 如何获取第4个 的字符位置 如果您只是想获取网址的最后一部分 您应该可以使用 NSArray items url componentsSep
  • 如何在我的 ASP.NET Core MVC 项目中引用 Microsoft.JQuery.Unobtrusive.Ajax

    我正在尝试使用Microsoft JQuery Unobtrusive Ajax 我首先使用 NuGet 安装该包 正如预期的那样 我能够在我的依赖项中看到它 我的问题是我找不到引用脚本的方法 因此我可以在我的视图中使用它 Here htt
  • MCS/nodejs 中的 URI 参数验证

    需要您的帮助来解决问题 我正在 MCS 中编写一个自定义 API 方法类型为 GET 将参数与 URI 一起传递 service get mobile custom deviceVersion deviceType function req
  • 确保 auto_cast 安全

    GMan https stackoverflow com users 87234 gman已经发布了一个代码可口的auto cast 操作员 https stackoverflow com a 4027734 87234允许在 C 中编写如
  • 用javascript编写的C解释器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有用 javascript 或 java 编写的 C 解释器 我不需要完整的解释器 但我需要能够逐
  • Spring Security for URL 与 PermitAll() 和过期的身份验证令牌

    我将 Spring 4 与 Spring Security 自定义 GenericFilterBean 和 AuthenticationProvider 实现结合使用 除了用于创建新会话的 URL 之外 我大部分都保护了 URL v2 会话
  • Jasmine 测试给出错误“Uncaught ReferenceError:require 未定义”

    我正在尝试在我的 React 网站上使用 Karma 运行 Jasmine 测试 我的测试之前是有效的 我不确定发生了什么变化 但现在我收到错误 Uncaught ReferenceError require is not defined
  • “顶部:0;左侧:0;底部:0;右侧:0;”是什么意思意思是?

    我正在阅读此指南site http www smashingmagazine com 2013 08 09 absolute horizontal vertical centering css 关于使元素居中的技术 我读了CSS代码 Abs
  • android 将xml转换为json

    我正在使用 java json jar 将传入的 xml 转换为可用的 json 我现在遇到的唯一问题是当 xml 包含它崩溃并显示以下日志 03 26 16 54 56 176 30119 30119 nl avrotros opgeli
  • Scala 的 for 推导式:重要特征还是语法糖?

    当我第一次开始研究 Scala 时 我喜欢 for 推导式的外观 它们似乎有点像我在 Java 5 中习惯的 foreach 循环 但有功能限制和很多漂亮的语法 但当我吸收了 Scala 风格后 我发现每次我可以使用 for compres
  • Powershell 获取超过 x 天的文件并移动它们

    我确信这个问题之前可能已经被问过一百万次了 我对 Power Shell 非常陌生 想问问我这样做是否正确 在目录中 我们有很多文件类型 我想要完成的任务是仅移动超过一个月的 PDF 文件 甚至不要碰其他文件扩展名 文件夹中的扩展名是 pd
  • Spring事务管理器是否将连接绑定到线程?

    我找到了以下线程 JdbcTemplate 与 TransactionManager 到底如何协同工作 https stackoverflow com questions 2250754 how exactly jdbctemplate w
  • 为什么要使用处理程序?

    我在一个非常基本的处理程序教程中遇到了这段代码 代码工作正常 但我不明白为什么我必须使用 HandlerprogressDialog dismiss 我删除了处理程序部分并放置progressDialog dismiss in the ru
  • 是否可以在 C++ 运行时动态创建函数?

    C 是一种静态的编译语言 模板在编译时解析等等 但是是否有可能在运行时创建一个函数 该函数未在源代码中描述 并且在编译期间未转换为机器语言 以便用户可以向其抛出源代码中未预期的数据 我知道这不可能以直接的方式发生 但肯定是可能的 有很多编程