是否可以使用回调类型定义来定义函数?

2023-11-29

我对使用预定义回调类型定义函数感兴趣。

假设我已经定义了回调类型:

typedef BOOL (*is_trigger_required_cb)(void);

现在我想使用上述类型声明并定义一个函数。

我想做这样的事情:

is_trigger_required_cb my_func { /* function implementation which accepts void and returns BOOL */ }

由于以下原因,这不会编译:

错误:预期为“;”在顶级声明符之后

据我了解,这是不可能的,因为编译器仅将回调类型称为类型安全函数指针,并且不能用于函数定义。如果回调类型发生变化,它将破坏编译,从而保持类型安全。


类型定义is_trigger_required_cb不是函数类型的别名,而是指向函数的指针。此外C11 6.9.1p2

函数定义中声明的标识符(即函数的名称)应具有函数类型,由函数定义的声明符部分指定。 [162]

脚注 162 说

162) 目的是函数定义中的类型类别不能从 typedef[...] 继承

也就是说,你就是做不到 - 原因很明显 - 功能type才不是name参数,因此它不能用于在函数体内声明参数。

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

是否可以使用回调类型定义来定义函数? 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 来自同一程序的多个输出纹理

    我正在尝试学习如何利用 WebGL2 中的同一程序进行多个输出gl drawBuffer 能力 我看了书 OpenGL ES 3 0 编程指南 第 11 章 其中列出了发生多输出所需的内容 但是 着色器源示例非常简单 仅输出常量值 我想知道
  • Spark:将 RDD 保存在 HDFS 中已有的路径中

    我可以将 RDD 输出保存到 HDFS另存为文本文件方法 如果文件路径已存在 此方法将引发异常 我有一个用例 需要将 RDDS 保存在 HDFS 中已有的文件路径中 有没有办法将新的 RDD 数据附加到同一路径中已存在的数据中 从 Spar
  • 单击后如何保持菜单链接突出显示(粗体和蓝色)?

    我的页面上有一个标题菜单 www wortwaerts net 在下面的代码的基础上工作正常 除了一个问题 到目前为止我找不到解决方案 我希望最后单击的菜单链接保持突出显示 粗体和蓝色 直到选择另一个链接然后将以同样的方式突出显示 我已经研
  • 如何在 Julia 中进行正确的微基准测试?

    朱莉娅 1 0 0文档提供一般提示 它还建议不要使用 time 宏 对于更严格的基准测试 请考虑 BenchmarkTools jl 包 其中多次评估函数以减少噪音 它们在使用中的比较如何 是否值得麻烦地使用 基础 Julia 中没有的东西
  • Google Apps 脚本错误 - 需要授权才能执行该操作

    我创建了一个 Apps 脚本来替换 Google Doc 中的令牌 此应用程序脚本已部署为 API 可执行文件 我可以在应用程序脚本编辑器中运行函数 而不会出现任何授权错误 但是 当从我的 java web 应用程序调用时 它有时会失败并出
  • 如何在c#.net中动态创建的按钮上执行点击事件

    我正在尝试构建一个应用程序 用户可以在其中选择类别并根据它显示其子类别 这些子类别是动态创建的按钮 现在 由于按钮是动态创建的 所以我很困惑如何在button click事件下编写代码 因为我不知道有多少子类别 那么有什么方法可以执行特定按
  • Xcode 9 Beta - 编辑器,列选择不见了?

    在以前版本的Xcode中 我们可以按住Alt Option键 拖动鼠标来选择文本编辑器中的列 在 Xcode 9 Beta 中这似乎不起作用 现在已经消失了 还是有不同的组合键 有任何想法吗 根据 Xcode 9 发行说明 这是一个缺失的功
  • 在 Microsoft Visual Studio 2015 中重新定义 C/C++ 入口点

    事情是这样的 伙计们 我在尝试使程序的入口点不被调用时遇到了麻烦main早些时候 在 Visual Studio 2012 中这非常简单 我只是使用 ENTRY链接器的密钥或我的项目的相同设置 项目 gt project name 属性 g
  • 如何在 CakePHP 中为一个模型动态使用多个数据库

    好吧 我的第一个问题被修改了很多次 所以我选择删除它并重新表述我的问题 我制作了一个具有不同模型名称的小型测试用例项目 以找到适合我的问题的解决方案 Warning 不要混用数据库与tables 动机 我将用户数据分成多个数据库对于法律和绩
  • 使用 ado 和 vbscript 从 csv 更新数据库而不需要记录集循环?

    我想使用 Vb 脚本和 ADO 将 csv 文件中的数据上传到 Access 数据库 这样我就不必打开 Access 或 Excel 到目前为止 我在下面有一个工作脚本 但是有没有更好的方法来批量上传数据 而无需创建记录集并循环每条记录 我
  • 是什么原因导致 ClickOnce URLDownloadToCacheFile 在安装过程中失败?

    通过 Firefox 安装 ClickOnce 应用程序时出现以下错误 在同一台计算机上使用 IE 则不会发生这种情况 我发誓我以前通过 firefox 安装过它 这是一台 Windows 7 机器 The following proper
  • 在 Windows 应用商店应用程序 WebView 中通过请求发布数据 - 使用 C#

    我的应用程序中有以下场景 首次启动时 用户可以注册一个帐户 然后 应用程序从我的网络服务器获取一对 int user id string session id 并将该数据存储在应用程序中 在我的应用程序中 我使用 WebView 它可以让用
  • 如何将数组中的每个元素转换为自己的数组?

    使用 Ruby 2 4 我有一个字符串数组 a b c 如何获取上述内容并将每个元素转换为它自己的一个元素数组 所以我希望这样的操作的结果是 a b c 您可以使用zip a b c zip gt a b c
  • ASP.NET 中的批量 301 重定向,包括需要根据查询字符串参数重定向到不同位置的页面

    我们网站的多个页面使用旧的非 SEO 友好 URL 进行索引 例如http www domain com DocumentDetails aspx id 555 最近 我们实现了使用存储在数据库中的 slug 的路由 并查找 slug 以使
  • C#读取USB设备序列号

    有没有办法使用 Visual Studio 2005 读取 USB 设备序列号和 USB 文本文件中的数据 尝试这个 USBSerialNumber usb new USBSerialNumber string serial usb get
  • 部署gae java时如何设置版本?

    由于 Intellij Idea IDE gae 部署插件不起作用 我必须使用mvn appengine update 它始终部署到版本 1 忽略 appengine web xml 中的版本 如何设置版本mvn appengine upd
  • 如何使用 NHibernate 进行分页?

    例如 我想仅使用显示的行数所需的数据填充 ASP NET 网页中的 gridview 控件 NHibernate 如何支持这一点 ICriteria has a SetFirstResult int i 方法 它指示您希望获取的第一个项目的
  • 实现弯曲动画的问题[重复]

    这个问题在这里已经有答案了 可能的重复 Android 沿路径移动位图 我想通过弯曲的路径移动图像 在android中可以吗 我搜索了很多 但我只能找到有关缩放 旋转和翻译动画的信息 所以有人有任何想法请帮忙 在 Android 中可能吗
  • 如何为 VS Code 创建默认/全局启动配置?

    我一直设置相同启动 json每个项目的文件 但我想更改默认值 以便它已经配置了启动目标 我可以更改默认值吗 或者可以创建一个用户值吗 我在 Mac OS X 上使用它 None
  • 是否可以使用回调类型定义来定义函数?

    我对使用预定义回调类型定义函数感兴趣 假设我已经定义了回调类型 typedef BOOL is trigger required cb void 现在我想使用上述类型声明并定义一个函数 我想做这样的事情 is trigger require