问题标签 [function-declaration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6213 浏览

c++ - 内联函数原型 vs 常规声明 vs 原型

内联函数和 main 之间有什么区别,如下所示:

vs 只是定期声明一个函数,例如:

vs 函数原型?

0 投票
3 回答
179 浏览

c - 解释这些函数指针声明的区别

请强调以下函数声明之间的区别:

  1. void (*p) (void *a[], int n)

  2. void *(*p[]) (void *a, int n)

0 投票
4 回答
881 浏览

c# - 有没有更好的方法来编写一个接受多种类型的 C# 函数?

一些上下文:我想编写一个类,其中将事物添加到集合的主要方法是通过名为 Add (或类似名称)的方法(或方法)。所以看起来最好的签名是 params object[]。在内部,这个函数必须切换/if-else 它可以接受的所有类型。所以,最初它可以接受这个 object[] 数组,但我可能希望它也接受 object[][] 和 object[][][] 等,然后方法/函数可以在内部变平,所以用户在调用此函数之前不需要这样做。

所以...

是否可以编写一个函数来接受一种对象的各种级别的列表类型? 作为一个附带问题,在设计类的接口时,接受object[]orIEnumerable<object>或哪个更好params object[](编辑:从这个问题中脱颖而出,因为已经有足够的事情发生了。)

例如,我正在考虑一个函数,它同时接受/全部object[], IEumerable<object>,并可能进一步嵌套,例如:IEnumerable<IEnumerable<object>>, object[][](以及 on、on 和 on 等)。

这可能吗?

0 投票
0 回答
73 浏览

c - K&R C 函数声明

可能重复:
这种 C 语法有什么用处?

阅读 Small-C 手册,我发现函数的声明方式很有趣,

起初我认为这只是 small-C 的一个怪癖,但我遇到了一些使用这种风格的 C 代码。特别是,我遇到了这篇文章

从帖子看来,变化不仅仅是语法糖。

那么它们到底有什么不同呢?我在哪里可以读到这个?

谢谢。

PS Small-C 手册讨论了函数声明,但是 Small-C 还允许您使用函数指针之类的整数(例如 256() 在 Small-C 中显然是语法上有效的函数调用),所以我不知道有多少我在手册中阅读的内容适用于我遇到的使用这种风格的 C 代码。

0 投票
5 回答
21697 浏览

c - C 是否支持可选的空参数?

在 Python 中,我已经习惯了

然后修饰符参数是可选的,可以将参数的缺失与0的参数区分开来。C中是否有类似的功能?我对 C 和谷歌搜索缺乏经验,但找不到关于如何在 C 中使用可选参数的明确说明。似乎您可以类似地分配它们,如下所示:

所以第二个参数是可选的,如果不使用则默认为 0? (编辑:不,这无论如何都是无效的C)

但是函数可以区分send_command(SOMETHING)send_command(SOMETHING, 0)吗?理想情况下,第二个参数可以是任何 uint8 值,包括 0。

也许 NULL 与 0 不同?

0 投票
1 回答
71 浏览

c++ - 如何使用此参数调用函数:fun(Ty param[NUM])?

在 API 头文件中,我发现了一个奇怪的函数声明:

whereAPI_NUM_CONST是一个枚举值并且API_SOMESTRUCT是一个结构,所以我猜这param是该结构的一个数组。

因此,该函数需要一个它填充或更改的现有数据字段。我不能说 API 函数在内部做了什么。

现在,我的代码如下所示:

但我怀疑这段代码是造成我最近遇到的堆损坏错误的原因,我不确定我的调用是否正确。


我了解带有非常量数组的函数头,其参数如下所示:

  • 那么 API 函数声明的确切含义是什么?
  • param按值调用还是按引用调用?
  • 以及如何正确调用该函数?
0 投票
4 回答
422 浏览

c++ - 函数声明中虚拟关键字的位置

virtual将关键字放在返回值类型之前或之后的函数声明中是否有任何区别?

在重构一些遗留代码时发现了void virtual语法,并且想知道它是否正在编译......

0 投票
2 回答
3197 浏览

javascript - 浏览器如何处理同名的多个函数声明?

浏览器如何处理同名的多个函数声明?

具体测试用例如下 - 注意:我知道允许服务器脚本创建多个具有相同名称的函数声明是没有意义的,但我很好奇,所以请在回答之前意识到这一点。这纯粹是为了行为研究。

我们的 CMS 创建了单个“小部件”的多个实例,该“小部件”由

和一个

当服务器渲染一个页面上有这个小部件的多个实例时,浏览器如何决定使用哪个 javascript 函数?是否有任何浏览器实际上为每个浏览器创建单独的对象(函数)?

谢谢,j

0 投票
4 回答
1002 浏览

c++ - C++ 声明一个函数而不是调用一个复杂的构造函数

首先,我知道在 stackoverflow 上已经有类似的问题(这个这个这个),这就是为什么我理解我的问题的原因。不幸的是,这并不能帮助我解决它。

虽然上述问题都与默认的无参数构造函数有关,但我在使用具有默认值的双参数构造函数时遇到了问题- 我试图构造一个调用构造函数的对象,只给出第一个值,并将其解析为函数声明而不是对象。

这是我的一些代码片段(我重命名了类名,因为它们很长且不相关):

类中的所有函数Concrete都实现了,而类中的函数都没有实现Virtual(除了构造函数和析构函数)。

所以,我现在的问题是我想做类似的事情

漂亮、可爱、优雅,但它不起作用(错误与我链接的所有问题相同)。我发现这个论坛教程确实将该问题称为最令人烦恼的 parse,但它的解决方案(在参数周围加上括号)并没有解决问题(在这种情况下它是一长串错误消息,但我可以编辑如果它有帮助,它会在稍后的问题中出现 - 这些都与继承虚函数有关)。

如果我使用带有默认所有参数的构造函数,我已经测试了我的代码,即使我只是单独构造第一个参数:

我可以按原样使用代码,但如果有人能给我一个更优雅的解决方案来解决我现在正在使用的问题,我将不胜感激。


编辑:当我修复最令人烦恼的解析时收到的错误消息

如果我使用带括号的代码:

我的错误是:

为了便于阅读,我重命名了路径并插入了示例文件和类名(与上面相同)。只是一个注释:line 45是有问题的构造函数的定义。另一方面,line 36是线class algoContainer

我也试过这段代码:

然后错误完全不同:

希望这可以帮助。

0 投票
1 回答
209 浏览

c++ - 请帮助我理解这个带有参数的 C++ 参数声明

我每天都使用 ROOT C++ 库 (root.cern.ch),并且在浏览源代码时遇到了这个函数声明:

可以在这里找到。

我不明白 a 如何const char *在其名称中包含参数或括号。该表达式va_(fmt)稍后被用作简单表达式,const char *即使它看起来像函数调用或构造函数。起初我认为它与变量参数列表有关,这对我来说也是新的,但是阅读 stdarg.h 上的文档对这个问题根本没有帮助。

谷歌很难寻求帮助,因为我真的不知道该怎么称呼它。带有参数的声明?这不会产生任何好的结果。

我曾经以为我知道 C++,但这是怎么回事?所有帮助将不胜感激。