另一个函数内的函数前向声明

2024-01-09

代码先行:

void foo(int x)
{
    void bar(int);  //is this forward-decl legal?
    bar(x);
}

void bar(int x)
{
    //do stuff
}

在上面的代码中,foo calls bar,通常我把前向声明bar在外面foo, 像这样:

void bar(int);
void foo(int x) 
{
    bar();
}

首先,我认为可以放置bar里面的前向声明foo, right?

其次,请考虑这一点,如果bar is a static像这样的函数:

static void bar(int x)
{
    //do stuff
}

那我应该如何前向声明呢?我的意思是前向声明应该采用还是省略static?


  1. 是的,在另一个函数中放置前向声明是合法的。那么它只能在该函数中使用。并且将使用您放入其中的函数的名称空间,因此请确保匹配。

  2. 该标准规定:“给定实体的连续声明所暗示的联系应一致。” (第 7.1.2 节)。所以是的,原型必须是static还。然而,它看起来不像是把一个原型static另一个函数内部的链接函数是完全允许的。 “不可能有static块内的函数声明”(同一节)。

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

另一个函数内的函数前向声明 的相关文章

随机推荐

  • EC.element_to_be_clickable 和 EC.presence_of_element_ located 之间单击()元素的区别

    我在间歇性单击某个元素时遇到 TimeoutExceptions 我尝试过显式等待和 time sleep 它工作了一段时间 我一次又一次地遇到例外 我想了解这是否是由预期条件引起的 WebDriverWait self driver 40
  • 简单饼图:错误百分比未居中?

    我有一个 symfony 项目 我使用 bootstrap 作为样式 并且我想使用 Easy Pie Chart 作为仪表板页面 所以 在 base html twig 中 block stylesheets endblock block
  • 将任意 GUID 编码为可读 ASCII (33-127) 的最有效方法是什么?

    GUID 的标准字符串表示形式大约需要 36 个字符 这非常好 但也非常浪费 我想知道如何使用 33 127 范围内的所有 ASCII 字符以最短的方式对其进行编码 简单的实现会产生 22 个字符 只是因为128 bits 6 bits产量
  • 来自旋转 JSON 的 D3 多系列折线图

    这里有一个很好的多系列折线图示例http bl ocks org mbostock 3884955 http bl ocks org mbostock 3884955如果 tsv 数据被布置出来 我确信它会看起来像这样 date 20111
  • .NET 进程可以分配的最大内存

    垃圾收集器可以为 NET 进程分配的最大内存是多少 当我编译到 x64 时 Process GetCurrentProcess MaxWorkingSet 返回大约 1 4GB 但是当我编译到 AnyCPU x64 时 返回相同的数字 对于
  • 无法通过 shell 在 CentOS 7 上安装 phpMyAdmin

    yum y install phpmyadmin 出现错误 Error Package phpMyAdmin 4 4 15 10 2 el7 noarch epel Requires php zip Available php common
  • 是否可以在 WPF ItemsControl 中模拟边框折叠(ala CSS)?

    我正在 WPF 中设置项目的样式ListBox 并希望在每个项目周围放置边框 和BorderThickness设置为 1 例如 相邻项目之间的上下边框都会被绘制 因此看起来比侧边框 更厚 如下所示 生成这些的项目模板ListBoxItems
  • ZeroMQ:重新绑定套接字时地址使用错误

    将 ZeroMQ 套接字绑定到端点并关闭套接字后 将另一个套接字绑定到同一端点需要多次尝试 之前的调用zmq bind直到成功失败并出现错误 地址正在使用 EADDRINUSE 下面的代码演示了这个问题 include
  • 是否有一个好的数据结构可以执行查找、并集和解并操作?

    我正在寻找一种可以相当有效地支持并集 查找和解并的数据结构 一切至少 O log n 或更好 因为标准的不相交集结构不支持解并 作为背景 我正在用 MCTS 编写 Go AI http en wikipedia org wiki Monte
  • SSL 和 SocketChannel

    理想情况下 我只需要一个简单的SSLSocketChannel 我已经有一个可以通过普通方式读取和写入消息的组件SocketChannel 但对于其中一些连接 我必须通过网络使用 SSL 然而 这些连接上的操作是相同的 有谁知道免费的SSL
  • 如何在VBA中清空数组?

    我正在开发一个与 COM 服务器交换对象的 Excel VBA 插件 如下所示 get an array of objects Dim Ents As ISomething ComObject GetEntities Ents send a
  • log4j 记录两次

    我正在使用 log4j 来记录错误和其他系统信息 但来自在信息级别记录两次的信息 public static void main final String args throws Exception LOGGER info program
  • Java弹跳球

    我正在尝试编写一个Java应用程序 它在屏幕上绘制多个从框架边缘弹起的球 我能成功抽出一个球 然而 当我添加第二个球时 它会覆盖我绘制的初始球 代码是 import java awt import javax swing import ja
  • 从 iPhone 中的音乐文件中获取 NSData

    我已从我的 iPhone 设备中检索了所有音乐和视频 我现在困于将这些保存到我的应用程序中 我无法从文件中获取原始数据 任何人都可以帮我找到解决方案吗 这是我用来获取音乐文件的代码 MPMediaQuery deviceiPod MPMed
  • Urllib2 和 BeautifulSoup :不错的一对,但太慢 - urllib3 和线程?

    当我听到有关线程和 urllib3 的一些好消息时 我正在寻找一种方法来优化我的代码 显然 人们不同意哪种解决方案是最好的 下面我的脚本的问题是执行时间 太慢了 Step 1 我获取此页面 Step 2 我用 BeautifulSoup 解
  • 如何在错误时继续执行sql脚本?

    我们有几个迁移脚本 它们会根据版本更改架构 有时 迁移步骤 例如 向表添加列 已经手动或通过补丁安装完成 因此迁移脚本失败 如何防止脚本因错误而停止 最好是在特定的预期错误时 而是记录消息并继续执行脚本 我们使用 PostgresQL 9
  • 如何将库与 webpack 捆绑在一起?

    我想创建一个前端库 因此我想使用webpack 我特别喜欢 CSS 和图像加载器 但是 如果我使用 webpack 我只能需要非 JS 文件 因为我正在建立一个图书馆 所以我不能保证我的图书馆的用户也会这样做 有没有办法将所有内容捆绑到 U
  • 如何以编程方式向以编程方式创建的 UIView 添加约束?

    我在 viewDidLoad 中使用以下代码创建了一个 UIView 其中 secondview 显然是 UIView 的名称 secondview UIView alloc initWithFrame self view frame se
  • 无法打开依赖项文件 SwiftStdLibToolInputDependency.dep

    我正在使用 Siri Shortcuts 开发 iOS objc 应用程序 我一切正常but当我添加意图扩展 以处理后台支持 并尝试运行该应用程序时 我收到错误 Intent Extension的IntentHandler只有默认的实现 错
  • 另一个函数内的函数前向声明

    代码先行 void foo int x void bar int is this forward decl legal bar x void bar int x do stuff 在上面的代码中 foo calls bar 通常我把前向声明