void** 是 ANSI-C 中可接受的类型吗?

2023-11-22

我见过一个函数,其原型是:

int myfunc(void** ppt)

该函数在 C 文件中调用为 a = myfunc(mystruct **var1);

其中 mystruct 是我们拥有的结构之一的 typedef。

这在MSVC6.0中没有任何编译错误,但是当我用其他一些C编译器编译它时,它在调用该函数的地方给出错误并显示错误消息:

mystruct ** 类型的参数与 void ** 类型的参数不兼容

myfunc() 的参数保留为 void**,因为它似乎是一种通用的 malloc 类型的函数,可以使用各种结构变量类型来调用以进行内存分配

  1. C 标准/任何 C 编译器是否允许任何类型,例如 void **?
  2. 我该如何解决? [我尝试将函数调用参数转换为mystruct**,但没有成功]

-AD


The comp.lang.c 常见问题解答详细解决了这个问题问题 4.9。简而言之,他们说它不是严格意义上的便携式将任意指针到指针转换为void **;他们继续解释说“这样的代码可能有效并且有时被推荐,但它依赖于具有相同内部表示的所有指针类型(这是常见的,但不是通用的)。”他们接着解释说“任何void **您使用的值必须是实际的地址void *某处有价值;像(void **)&dp,尽管它们可能会关闭编译器,但它们是不可移植的(甚至可能无法执行您想要的操作)。”

因此,您可以使用以下代码安全/可移植地实现所需的行为:

some_type *var1 = foo();
void *tmp_void_ptr = (void *)var1;
myfunc(&tmp_void_ptr);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

void** 是 ANSI-C 中可接受的类型吗? 的相关文章

  • 在c中用以下结构填充矩阵

    我有以下结构 typedef struct arr integer int size int arr arr arr integer arr arr integer alloc arr integer int len arr arr int
  • 请求的资源不支持 HTTP 方法“GET”

    我的路线配置正确 并且我的方法具有装饰标签 我仍然收到 请求的资源不支持 HTTP 方法 GET 消息 System Web Mvc AcceptVerbs GET POST System Web Mvc HttpGet public st
  • 更改 Visual Studio 2015 扩展中项目内的文件 ProjectItem 的内容?

    如何更改文件的内容 ProjectItem在给定的范围内Project 我想用字符串替换它的所有内容 这个问题有解决办法吗 我想做一些改变ProjectItem CS 文件 通过使用 VSIX 包 以及我现在看到的唯一一种执行此操作的方法
  • 在静态断言和运行时错误之间自动选择

    我有一个执行除法并检查对齐的宏 define BYTES TO WORDS x CHECK ALIGNMENT x 2 x 2 我想实施CHECK ALIGNMENT作为一个总是返回 1 的宏 并且如果满足以下条件则触发错误x不除以 2 宏
  • Rx Framework:在超时时执行操作,而不中断原始可观察序列

    给定一个可观察的源 通过轮询低级设备的 变化 状态生成 observable source metacode IObservable
  • 将 Visual Studio 2012 C++ 单元测试项目链接到 exe 会导致访问冲突

    我从现有的整体 exe 本机 Visual Studio 2012 项目开始 我想添加一个本机单元测试项目 根据http msdn microsoft com en us library hh419385 aspx objectRef ht
  • 堆栈独立的C/C++蓝牙API?

    我想知道是否有适用于 Windows XP Vista 7 x86 和 x64 的堆栈独立 C C 蓝牙 api 我的目标是创建连接并通过蓝牙发送 接收一些时间关键的数据 我的研究给了我以下选择以及这项任务的缺点 用于蓝牙的 Windows
  • 模拟 EF core dbcontext 和 dbset

    我正在使用 ASP NET Core 2 2 EF Core 和 MOQ 当我运行测试时 我收到此错误 消息 System NotSupportedException 非虚拟 可在 VB 中重写 成员上的设置无效 x gt x Movies
  • 如何从c++调用python

    我是Python新手 我尝试像这样从 C 调用 python 脚本 在 Raspberry Pi 中 std string pythonCommand python Callee py a b int res system pythonCo
  • 接口中的私有成员

    是否可以在 NET 接口中创建私有成员 我听说现在可以了 但我的 IDE 拒绝了 public interface IAnimal void SetDefaultName string name ChangeName name privat
  • 如何检查是否发生溢出? [复制]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • 那里有更好的 DateTime.Parse 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道有一个库 付费或免费 能够处理比 DateTime Parse 使用的更常见的日期时间格式 能够
  • 为什么 C# 编译的正则表达式比等效的字符串方法更快?

    每次我必须对字符串执行简单的包含或替换操作 其中我正在搜索的术语是固定值 时 我发现如果我获取示例输入并对其进行一些分析 则使用编译的正则表达式是几乎 总是比使用 String 类中的等效方法更快 我尝试过比较多种方法 hs是要搜索的 干草
  • CS0246 找不到类型或命名空间名称“ErrorViewModel”(您是否缺少 using 指令或程序集引用?)

    我收到 CS0246 错误代码 我正在做一个 MVC net core 项目 我正在将 Razor 合并到我的 C 代码中 我在进行构建时收到此错误 我在最后一行收到错误 有人能帮我解决这个问题吗 global Microsoft AspN
  • 如何定义 Swagger UI 参数的默认值?

    我已将 Swagger Swashbuckle 集成到 NET Core 2 2 API 项目中 一切都很好 我的要求纯粹是为了方便 考虑以下 API 方法 public Model SomeEstimate SomeRequest req
  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • g++4.9 不支持 std::align

    在学习对齐问题等时 我意识到我的 g 4 9 macports OS X 实现不支持std align 如果我尝试编译 使用 std c 11 此示例代码来自http www cplusplus com reference memory a
  • 如何在OpenGL中像这样绘制连接的带状线

    我想用以下方式绘制一系列连接线 GL LINE STRIP 我尝试过自己编写代码 但没有得到想要的结果 所以我来到这里 帮助我找出我错在哪里 这里我只给出我的draw 函数 glBegin GL LINE STRIP glVertex2f
  • STL 向量、迭代器和插入 (C++)

    我有一个将向量的迭代器传递到的方法 在这个方法中 我想向向量中添加一些元素 但我不确定当只有迭代器时这是否可行 void GUIComponentText AddAttributes vector
  • 为 C++ 类播种 rand()

    我正在开发一个 C 类 它使用rand 在构造函数中 我真的希望这个班级在几乎所有方面都能照顾好自己 但我不知道在哪里播种rand 如果我播种rand 在构造函数中 每次构造我的对象类型的新实例时都会对其进行播种 因此 如果我按顺序创建 3

随机推荐

  • 从先前的布局方向在相同位置重绘多个路径

    基于我之前的问题 如何在camera2 Android api中创建一个BottomBar作为StickyBottomCaptureLayout 我创建了一个布局StickyBar SB 始终锁定在系统栏上方 附近 我设置了 SB 和其他布
  • MVC,不再“应该”使用 HttpContext.Current 了吗?

    有人在帖子里here 评论说在使用 MVC 时不应该使用 HttpContext Current 而应该使用ControllerBase ControllerContext 在某些方面 这是有道理的 但在其他方面则不然 例如 Control
  • 设置错误值与删除属性

    我正在读一些关于布尔属性的内容here 这表示对于布尔属性 在这个特定的示例中 loop的属性
  • 从 XmlDocument XPath 查询获取特定数量的结果

    我正在查询 Twitter RSS 源并将结果提供到转发器中进行显示 我只想获取 XPath 查询的前 5 个结果 有没有办法在 XPath 语法中做到这一点 或者我是否必须循环生成结果XmlNodeList取出前5个 XmlDocumen
  • .NET Core 2.0 Cookie 事件 OnRedirectToLogin

    如何将中间件应用于 Cookie 选项中的 OnRedirectToLogin 事件 以便我可以使用依赖项注入 或者如何从 RedirectContext 检索 actionContext 我尝试过搜索文档或示例 但很难找到 而且我还没有看
  • JavaBean 比较

    有谁知道一个免费的开源库 实用程序类 它允许您比较一个 Java bean 的两个实例并返回在这两个实例中值不同的属性列表 数组 请发布一个小样本 Cheers Tomas Bean比较器Apache commons 就是您正在寻找的 Up
  • Azure Function - 此平台不支持 System.Data.SqlClient

    我正在运行以下内容insert将我的 azure 函数中的代码写入 azure sql server 2014 数据库 private static void Command SqlConnection sqlConnection stri
  • 带有 select2 z-index 的引导模式

    我正在尝试将内容从不同的 html 页面加载到弹出窗口 然后在其上应用 select2 一切正常 但 select2 的 z index 不正确 如果我将其修改为比引导对话框更大的值 这是我正在做的事情的一个片段 select2 dropd
  • IAP - 如果内容下载失败或收据无效,如何取消购买交易?

    我正在尝试用 IAP 来解决一些问题 在文档中 我看到只有在为用户成功下载购买的内容后 我才需要调用完成交易 您的应用程序应仅在成功处理交易并解锁用户购买的功能后调用 finishTransaction 我有这样的情况 用户购买内容 购买完
  • 如何在 Azure Dev Ops 中编辑视图和编辑发布管道的 YAML 文件?

    我已通过修改管道 YAML 文件在 Azure Dev Ops 上成功构建了代码 但我无法成功将该项目部署到我的 IIS 服务器 创建部署的唯一方法是使用其令人不快的 UI 我读到 通过打开多管道预览功能 您可以查看和编辑 YAML 文件
  • 核心数据不支持带有 ALL 和 IN 的谓词

    我有一个这样的请求 NSPredicate predicate NSPredicate predicateWithFormat ANY attributes attribute attributeId IN attributeIds 这将返
  • 无法通过 IP 和命名实例远程连接到 SQL 2012

    首先 我已经知道 Windows 防火墙正在阻止我的连接 我只是不知道该怎么办 当我完全关闭 WF 时 我的远程连接可以正常工作 我已经有一条规则允许端口 1433 传入请求 这似乎是正确的端口 但我不确定 现在了解更多详细信息 我的远程专
  • Firemonkey Mobile 中的 Bidi 从右到左语言

    如何使用 FireMonkey 在 Android 或 iOS 中以从右到左的语言 例如波斯语或阿拉伯语 显示任何字符串 我使用 Embarcadero Rad Studio XE6 Delphi 当我放置 TLabel 或 TEdit 并
  • 如何在 Java 字符串的正则表达式中使用开始和结束标记?

    为什么以下内容没有为我在 Android 中更改文本 String content test n test ntest content content replaceAll
  • 使用 lm() 进行线性回归 - 对结果感到惊讶

    我对已有的数据进行了线性回归 使用lm功能 一切正常 没有错误消息 但我对结果感到惊讶 我的印象是 R 错过 了一组点 即截距和斜率不是最佳拟合 例如 我指的是坐标 x 15 25 y 0 20 处的点组 我的问题 是否有一个函数可以比较
  • Twig / PHP - 使用替换或正则表达式格式化字符串

    如何在 Twig 中格式化字符串 如下所示 例如 img 05myphoto Car jpg 我需要删除数字前缀和 我主要用它来根据文件名输出图像的标题 期望的输出 Myphoto Car 到目前为止 我已经从文档中尝试过 img repl
  • 需要帮助解决 python 中的二阶非线性 ODE

    我真的不知道从哪里开始解决这个问题 因为我对此没有太多经验 但需要使用计算机来解决该项目的这一部分 我有一个二阶常微分方程 m 1220 k 35600 g 17 5 a 450000 b 介于 1000 到 10000 之间 增量为 50
  • 如何使用 JavaScript 在新选项卡中打开链接

    我正在开发一个网站 我必须从后端打开一个网址 我现在用的是c 我的问题是我想在新选项卡而不是新窗口中打开链接 我的代码在这里 string url ppHref ToString string newScript ClientScript
  • 如何在流星上创建自动增量字段?

    我需要一个自动增量字段 但不是用于主 ID 它只是为了向客户支持应用程序的用户提供一个易于记住的案例编号 我发现这篇文章解释了如何在 mongodb 上创建自动增量字段http docs mongodb org manual tutoria
  • void** 是 ANSI-C 中可接受的类型吗?

    我见过一个函数 其原型是 int myfunc void ppt 该函数在 C 文件中调用为 a myfunc mystruct var1 其中 mystruct 是我们拥有的结构之一的 typedef 这在MSVC6 0中没有任何编译错误