问题标签 [function-definition]
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.
c - C中的函数参数放置
我在程序中使用SDBM哈希函数,并且对函数定义有疑问,转载如下:
我通过反复试验了解到该函数需要一个unsigned char *
,但是为什么将它放在括号之后和花括号之前?我不知道这是一个选项,我找不到任何东西来告诉我为什么它不是这样写的:
当然,如果我把它修改成这样,这个功能看起来仍然可以很好地工作,那为什么要这样做呢?有什么不同?
c - C中内置函数的函数定义
我们在 C 程序中包含头文件stdio.h
以使用内置库函数。我曾经认为这些头文件包含我们可能在程序中使用的内置函数的函数定义。但很快发现并非如此。
当我们打开这些头文件(例如stdio.h)时,它只有函数原型,我看不到函数定义。我看到这样的事情:
(来源:https ://www.gnu.org/software/m68hc11/examples/stdio_8h-source.html )
然后有人告诉我,函数定义可能必须在我们检查的头文件中包含的头文件之一中,所以我相信了一段时间。从那以后,我查看了很多头文件,但从未找到一个函数定义。
我最近读到,内置函数的函数定义不是直接提供的,而是以某种特殊的方式给出的。这是真的?如果是这样,内置函数的函数定义存储在哪里?由于头文件只有它们的原型,它们是如何被带入我们的程序的?
编辑:请注意,我只是作为示例显示了头文件的内容。我的问题与_EXFUN
宏无关。
c - 谁能解释这个程序的输出
具有递归函数的静态变量示例
c - 在递归函数中返回
我试图了解如何在 C 中使用递归,但我不知道return
它是如何工作的。
请考虑以下代码:
输出是:
最后一个返回, return i
, 做什么?这段代码是否有意义?
c++ - C++ - 一个函数声明,多个定义,它仍然有效吗?
好的,我有 3 个文件、一个标头、一个标头的来源和一个主文件。在头文件中,我定义了一个带有函数的类。在源文件中,我定义了函数。但是,在主文件中,我重新定义了函数,然后在主函数中创建类的实例并调用该函数。这编译得很好 - 没有任何警告。至少可以说输出是可怕的。
头文件:testme.h
来源:testme.cpp
主要:main.cpp
输出:
为什么这行得通?为什么没有关于多个定义的错误?为什么源文件的定义会被忽略?为什么没有警告?
部分答案 当它被重新编译为“g++ main.cpp testme.cpp -o sanity.o”时,实际上会产生链接器错误。
然而,让我明白的是,我写的这个小案例反映了我在一个更大的程序中遇到的一个问题,该程序在库中定义了一个函数,但是我们以几乎相同的方式在另一个“测试套件”程序中重新定义了一个函数。为什么会这样?它在库中允许它覆盖 ODR 怎么样?
c - 隐式函数声明的行为
我知道使用没有原型的函数是错误的。但是当我摆弄时,我遇到了这种奇怪而矛盾的 行为。
测试1
隐式函数声明将是 int xof(int ,double );
错误是
variablename.c:8:5: error: 'xof' int xof(char c,float f) 的类型冲突
我理解这一点,因为隐式生成的函数声明(默认整数值为 INT,小数为 DOUBLE)与以下函数定义不匹配
测试2
隐式函数声明将是 int xof(int); 应该与函数定义冲突
但这运行良好(没有错误)并且输出是'a'表现为 'int' 值并且'b'有 'undefined Garbage'
-1 12260176
有人可以解释一下吗。提前致谢。
c++ - 声明中类型和对象的相同标识符
我偶然发现了一个函数实现,它为相同类型的参数回收类型名称。代码编译并且似乎完全符合预期。这是一个最小化的版本:
该代码是针对 Borland C++ 5.6.4 开发的
我尝试了几种不同且更新的编译器:
- C++11(mingw32-g++ 4.9.2,随 CodeBlocks 16.01 提供)
- C++ (gcc 6.3)
- C++14 (gcc 6.3)
- C++ 4.3.2 (gcc 4.3.2)
- C++14 (clang 4.0)
大家无怨无悔地接受它。
我不认为它是好的 C++,但是......
它是有效的 C++ 吗?如果是的话,它在未来是否有效?
更新
多么可怕!直到现在我才看到,对于简单的变量声明也是如此:
演示:http: //ideone.com/a9GM49
更新#2
C++ 与 C 语言共享此功能:
演示:http: //ideone.com/nheZTa
javascript - AngularJS:函数不是函数
我有一个 AngularJS 应用程序,在其中一个页面上,我有许多小部件,每个小部件都显示有关系统一部分状态的一些信息。我目前正在添加功能以允许用户“隐藏”给定小部件的标题。
在显示小部件的页面上有一个“设置”按钮,单击该按钮时,会在每个小部件顶部覆盖一个工具栏。工具栏有许多按钮——其中一个是另一个“设置”按钮,它打开一个对话框,允许用户更改该特定小部件的设置。
我在对话框中添加了一个复选框,以使用户能够从视图中“隐藏”该特定小部件的标题:
当在对话框中选中复选框并且用户单击“预览”时,我期望(最终 - 我仍在努力实现该功能)隐藏该特定小部件的标题。但是,目前,当用户单击“预览”时,无论是否选中该复选框,我都会在控制台中收到一条错误消息:
类型错误:$scope.widget.toggleWidgetHeading 不是函数
此错误来自$scope.preview
在对话框中单击“预览”按钮时调用的 ctrl.js 中的函数:
我不明白为什么我会收到这个控制台错误,因为toggleWidgetHeading()
显然是一个函数......
如果我在 Sublime 中右键单击上面的函数调用,然后选择“转到定义”,我将被带到定义函数的 directive.js 文件:
此外,单击对话框上的“预览”按钮不再关闭对话框...
为什么当它被明确定义为一个函数时,我被告知这个函数调用不是一个函数?这里的问题是否与范围有关(即我从 ctrl.js 调用该函数,即使它是在directive.js 中定义的)?
python - 如何散列类或函数定义?
背景
在尝试机器学习时,我经常通过酸洗/解酸重用之前训练过的模型。然而,在处理特征提取部分时,不混淆不同的模型是一个挑战。因此,我想添加一个检查,以确保模型是使用与测试数据完全相同的特征提取过程进行训练的。
问题
我的想法如下:与模型一起,我将在 pickle 转储中包含一个哈希值,该哈希值对特征提取过程进行指纹识别。
在训练模型或将其用于预测/测试时,模型包装器会被赋予一个符合特定协议的特征提取类。当然,在那个类上使用hash()
是行不通的,因为它在调用之间不是持久的。所以我想我也许可以找到定义类的源文件,并从该文件中获取哈希值。
但是,可能有一种方法可以直接从类的内存内容中获取稳定的哈希值。这将有两个优点: 如果找不到源文件,它也可以工作。它可能会忽略对源文件的不相关更改(例如,修复模块文档字符串中的错字)。类是否有可以在这里使用的代码对象?
c++ - 为什么VS2017警告“未找到函数定义”对于使用输入typedef'd声明但使用原始定义的函数?
我试图模仿 CURL 似乎如何在内部将 CURL 结构实现为 Curl_easy,以便 API 用户使用结构名称 CURL,并且 API 在内部将 CURL 引用为 Curl_easy。
这是通过具有
在 curl/curl.h 然后有
和
分别在 curl/easy.h 和 easy.c 中。
所以我复制了这个想法并做了一个小例子,应该做同样的事情:
这使得那些函数 initializeIS() 和 countUpIS() 的用户使用结构名称“IS”,但这些函数的开发人员将其称为“IntStruct”。
此代码编译并运行良好,但 VS2017 似乎将绿色下划线 countUpIS 作为“未找到 'countUpIs' 的函数定义”。
为什么会这样?一些完全合法但在 VS2017 中没有很好解析的东西?