将原始数据类型转换为 void 指针类型

2024-01-05

我正在阅读有关 pthreads 的内容here https://computing.llnl.gov/tutorials/pthreads/。在一个例子中,他们给出了this https://computing.llnl.gov/tutorials/pthreads/samples/hello.c源代码。

创建线程时,它们将 long 类型(强制转换为 void * 类型)传递给函数!。

在函数内部,它们接收该值并进行反向转换以获得长整型值。

Q1:是否允许将指针类型转换为原始数据类型,反之亦然(在 C 和 C++ 中)?

Q2。如果是这样,这样做是好事吗?他们不应该创建一个指向这个 long 类型的指针,然后将该指针强制转换为 void * 并将其传递给函数吗?

我发现这种将原始类型转换为指针类型的想法非常令人困惑? 从任何指针类型到 void* 的转换是可以理解的,但是原始数据类型如何存储在 void* 类型中?在特定系统上,基元类型的大小是否有可能大于为指针类型分配的大小?


Q1:是的,但是这是否有效是由实现定义的(= 取决于平台)。一个更安全的版本会使用uintptr_t代替long.

Q2:这绝对是糟糕的风格。通过分配一个正确的方法,不会有太大的性能损失long并传递地址。

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

将原始数据类型转换为 void 指针类型 的相关文章

  • C++ Singleton 类 getInstance (作为 java)[重复]

    这个问题在这里已经有答案了 可能的重复 谁能给我提供一份 C 中的 Singleton 示例吗 https stackoverflow com questions 270947 can any one provide me a sample
  • 使用来自本地对象的消息的 std::Exception

    以下代码是否可以安全地抛出带有自定义消息的异常 include
  • 将内核链接到 PTX 函数

    我可以使用 PTX 文件中包含的 PTX 函数作为外部设备函数 将其链接到另一个应调用该函数的 cu 文件吗 这是另一个问题CUDA 将内核链接在一起 https stackoverflow com questions 20636800 c
  • 在 C 中声明和初始化数组

    C 有没有办法先声明然后初始化数组 到目前为止 我一直在初始化一个这样的数组 int myArray SIZE 1 2 3 4 但我需要做这样的事情 int myArray SIZE myArray 1 2 3 4 在 C99 中 您可以使
  • 如何获取任意类型的默认值

    在 C 中我可以写这样的东西 class AnyThing
  • 使用 boost::iterator_facade<>

    我有一个链表结构 struct SomeLinkedList const char bar int lots of interesting stuff in here DWORD foo SomeLinkedList pNext 它是现有
  • F# 内联如何工作?

    对于 F 我的理解是您可以使用 inline 关键字在调用站点执行类型专门化 那是 val inline a gt b gt c when a or b static member a b gt c 约束条件是 a or b必须有一个静态成
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 有哪些 API 可在 Windows 中使用 C# 配置扬声器设置?

    我环顾了很多不同的地方 但似乎找不到一个简单的方法来做到这一点 我在 Windows 7 中有多个声卡 并使用 HDMI 将声音输出到我的 AVR 放大器 我遇到的问题是 当放大器关闭时 它会导致窗口丢失扬声器配置 所以我想做的是编写一个小
  • 使用成员函数作为 std::shared_ptr 的自定义删除器时出现问题

    我正在尝试弄清楚如何将 std shared ptr 与自定义删除器一起使用 具体来说 我将其与 SDL Surface 一起使用 如下所示 std shared ptr
  • 编译器在函数名称前添加下划线前缀的原因是什么?

    当我看到 C 应用程序的汇编代码时 如下所示 emacs hello c clang S O hello c o hello s cat hello s 函数名称以下划线作为前缀 例如callq printf 为什么这样做以及它有什么优点
  • 如何忽略搜索条件中的空属性

    我有一个不好的要求要做 无论如何 我必须在我的应用程序中实现它 我有一个Track class public class Track public string Name get set public string City get set
  • Windows Phone HttpClient PostAsync 挂起且无响应

    我在拨打电话时遇到问题HttpClientWP 应用程序的 post 方法 PostAsync总是挂起并且不给出任何响应 当我从 WPF 应用程序中尝试时 相同的代码可以工作 这是我正在做的事情 服务器Web API代码 public cl
  • 一个对大文件有效的轻量级 XML 解析器?

    我需要解析潜在的巨大 XML 文件 所以我猜这排除了 DOM 解析器 是否有任何优秀的 C 轻量级 SAX 解析器 在占用空间上可与 TinyXML 相媲美 XML的结构非常简单 不需要诸如命名空间和DTD之类的高级东西 只是元素 属性和
  • 序列化时如何跳过 xml 声明?

    我正在尝试输出一个没有 xml 头的 xml 文件 例如 我试过 Type t obj GetType XmlSerializer xs new XmlSerializer t XmlWriter xw XmlWriter Create c
  • RabbitMQ + Windows + LDAP 无需发送密码

    我正在尝试在 Windows 7 上使用 RabbitMQ 3 6 2 进行 LDAP 身份验证 授权 我已经在应用程序发送用户名 密码的情况下进行了基本身份验证 但密码位于我需要弄清楚如何进行的代码中避免 有没有人在不提供密码的情况下成功
  • Azure Function App Azure 服务总线触发器触发两次

    我使用带有服务总线触发器的 Azure Function Apps 来读取服务总线并对服务总线消息的内容执行操作 服务总线接收 JSON 序列化对象 然后将 JSON 消息反序列化回 Function App 中的对象 然而 由于某种原因
  • 在 C++ 中将大型数据向量写入/读取到二进制文件

    我有一个 C 程序 它通过将 ascii 文件中的网格人口数据读取到大型 8640x3432 元素双精度向量中来计算给定半径内的人口 将 ascii 数据读入向量大约需要 30 秒 循环每列和每行 而程序的其余部分只需要几秒钟 我被要求通过
  • 如何通过Task.ContinueWith创建传递?

    我想在原始任务结束时添加一个任务 但想保留原始结果和类型 附加任务仅用于记录目的 例如写入控制台等 例如 Task Run gt DateTime Now Hour gt 12 Hey throw new Exception Continu
  • Selenium WebDriver 在按钮单击事件上无法正常工作。这里有什么问题呢?

    I am using following code to scrape data from a website I have following interface 这是 HTML div class es content div

随机推荐

  • Ruby Net::SFTP 的公钥/私钥身份验证

    我无法找到用于指定 SFTP 身份验证密钥的文档 想要有类似的东西 export SOME PRIVATE KEY cat tmp some certs privatekey pem then somewhere in the code p
  • 无法在模拟器中运行应用程序:运行时遇到错误(域 = LaunchServicesError,代码 = 0)

    在配置配置文件出现问题后 我无法在模拟器中运行我的应用程序 我正在 Xcode 6 beta 4 中进行快速编码 在证书配置文件出现问题之前 这一切都很好 我尝试过清理构建 检查 xCode6 beta4 的命令行是否运行 检查了构建部署
  • jQuery(反)模式:使用字符串操作构建选择器

    我经常发现自己使用字符串操作 拆分 搜索 替换 连接 连接 来构建选择器 是好是坏 这有什么问题吗 有什么替代方案 只是将它们硬编码为单个字符串 但是您可以在网站上使用约定来组织布局 如果您只是在一个地方定义选择器组件 并使用它来构建选择器
  • 使用 monotouch 在 ios 中自定义自动完成选项列表

    我希望能够为在 Monotouch 中创建的 ios 应用程序中的文本输入提供我自己的可用自动更正 自动完成选项列表 单词列表通过网络服务进行更新 完成搜索时 可以在 Ebay 应用程序中看到此类功能的示例 实现这一目标的最佳方法是什么 您
  • 演示与基于类的模型相关的 Javascript 继承优势

    谁能提供一个具体的示例来展示 Javascript 的原型继承 以说明何时使用传统的基于类 经典 模型是有益的 我见过的其他问题 例如经典继承与原型继承 https stackoverflow com questions 1450582 c
  • 如何使用反射来调节多个属性以检查 LINQ .Where 语句中的相等性,具体取决于传递的类?

    我试图概括一个重复检查器函数 该函数根据对象的类型 检查所述类具有的属性 在配置中提供 是否等于另一个列表中的属性 我决定创建一个字典 它将接受键的类型字符串 书籍 作者 商店等 和需要相等的属性数组 字典条目示例 Book Title C
  • 在 IE 和 JSFiddle 中使用 elem.dataset 时出现问题

    在我在 Chrome 上创建的 JSFiddle 中 我发现它无法在 IE 上工作 我使用的是 IE9 任何与此相关的原因 http jsfiddle net ZSB67 http jsfiddle net ZSB67 var backIm
  • UIView 对象的唯一标识符

    我遇到以下问题 当 UIVIew 上发生某种触摸时 我想存储这个 UIView唯一标识符 比如 objectID 这样当我再次重新打开我的应用程序时 我可以检查可见的 UIView 中是否存在具有存储中唯一 ID 的 UIView 我不想将
  • 使用 PlayFramework 多重上传文件

    我尝试使用 Play Framework 一次上传多个文件 但我总是获得每个上传的第一个图像 这是一个具体案例 HTML
  • 动态壁纸和扩展背景

    我正在尝试创建一个动态壁纸 其动画始终位于当前主屏幕页面的中心 而不会丢失扩展背景 我现在正在做的是绘制自定义背景位图 然后在其上绘制一些文本 这是我的并条方法 final SurfaceHolder holder getSurfaceHo
  • merge --squash 和 rebase 有什么区别?

    我试图理解壁球和变基之间的区别 据我了解 在进行变基时会执行挤压 Merge commits retains all of the commits in your branch and interleaves them with commi
  • 从标准输入读取

    使用读取用户输入的可能方法有哪些read Unix 中的系统调用 我们如何使用从 stdin 逐字节读取read 你可以这样做来读取 10 个字节 char buffer 10 read STDIN FILENO buffer 10 记住r
  • 如何让导航栏透明

    如何在 Android 4 4 X 及更高版本上使导航栏透明 我在文档中进行了搜索 但没有找到任何相关内容 我已从更改日志中获取了此内容安卓奇巧 4 4 http developer android com about versions a
  • 安装 django-admin-charts 后出现关于 smart_text 的错误

    我想在管理面板中显示图表 我安装了django admin charts包裹 其中说将这些添加到settings py INSTALLED APPS admin tools stats this must be BEFORE admin t
  • git merge 导致不合理的冲突

    我基本上在从 current iteration 合并到我的分支的几乎所有文件上都遇到了冲突 这真是令人抓狂 让许多人惊讶不已 摸不着头脑 我目前正在使用 git 版本的 mac 工作2 18 0 我的同行都在Windows git版本上工
  • 在docker中运行jupyter笔记本时如何处理python模块安装?

    我目前开始使用很棒的 jupyter 笔记本 由于我总是遇到由于不同的 python 版本和 python 模块版本而无法工作的问题 因此我喜欢在 docker 容器中运行 jupyter Notebook 我创建了一个Dockerfile
  • Azure Web APP 中的 DOS 保护

    我们正在为我们的前端站点使用 Azure Web APP 最近我们的网站发现了DOS攻击 当我用谷歌搜索时 我了解了 Azure 云服务的解决方案 有什么办法可以通过开箱即用的支持来保护 Azure Web APP Azure 网站启用了
  • vue test utils TypeError:无法解构“未定义”或“空”的属性“配置”

    我只是使用 vue test utils 进行简单的单元测试 但它不起作用 我不知道 帮我 我安装了这个东西 gt npm i D jest vue test utils vue jest jest serializer vue babel
  • 如何将所有文本从控制台获取到字符串?

    我是这样测试的 NUnit ConsoleRunner Runner Main new string System Reflection Assembly GetExecutingAssembly Location OpenShop Fir
  • 将原始数据类型转换为 void 指针类型

    我正在阅读有关 pthreads 的内容here https computing llnl gov tutorials pthreads 在一个例子中 他们给出了this https computing llnl gov tutorials