如果声明的函数具有noexceptspecificator( ,noexcept,noexcept(true),noexcept(false)或任何其他noexcept(expr)计算结果为true或false),但它在另一个地方定义的,做我需要指定noexcept再次定义符,或仅在其向前声明?
以下代码有效:
int main()
{
void foo(int);
foo(3);
return 0;
}
void foo(a) int a;
{
printf("In foo\n");
}
Run Code Online (Sandbox Code Playgroud)
但这个没有:
int main()
{
void foo(float);
foo(3.24);
return 0;
}
void foo(a) float a;
{
printf("In foo\n");
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
如今,我正在阅读APUE.我发现函数定义如下:
void (*signal(int signo, void (*func)(int)))(int);
Run Code Online (Sandbox Code Playgroud)
我很困惑,我知道signal是指向函数的指针,而last(int)是他的参数.我不知道是什么(int signo,void(*func)(int)).
我认为区别在于declaration没有参数类型......
为什么这样做:
int fuc();
int fuc(int i) {
printf("%d", i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但这无法编译:
int fuc();
int fuc(float f) {
printf("%f", f);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
随着消息:
错误:'fuc'的冲突类型.注意:具有默认促销的参数类型不能与空参数名称列表声明匹配
我只是浏览gcc源文件.在gcc.c,我发现了类似的东西
extern int main (int, char **);
int
main (int argc, char **argv)
{
Run Code Online (Sandbox Code Playgroud)
现在我的疑问是extern告诉编译器特定的函数不在这个文件中,但是会在项目的其他地方找到.但是在这里,定义main是在extern声明之后立即.extern宣言服务的目的是什么?
看起来,在这个具体的例子中, extern似乎表现得像export我们在汇编中使用的那样,我们在模块之外输出一个特定的符号
有任何想法吗?
我正在尝试编写一个函数,它接受一些字符串并对它们做一些事情.
我要做的唯一事情是字符串集循环遍历它们.现在,我最终得到了一条笨拙的构造
public void foo(String[] myStrings){
foo(java.util.Arrays.asList(myStrings));
}
public void foo(Iterable<String> myStrings){
for(String i : myStrings){
bar(i);
}
}
Run Code Online (Sandbox Code Playgroud)
从那以后感到多余
for(String i : myStrings){
bar(i);
}
Run Code Online (Sandbox Code Playgroud)
对于String []类型的myStrings来说,它将是完全有效的代码.
是否有一个我可以接受foo的类,它将允许集合和数组?
我自己在学习javascript.我发现如果我声明一个具有相同参数的函数它只是工作正常:
function func(a, b, a){
return b;
}
alert(func(1,2,3));
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
function func(a, b, a = 5){
return b;
}
alert(func(1,2,3));
//Firebug error - SyntaxError: duplicate argument names not allowed in this context
Run Code Online (Sandbox Code Playgroud)
然后它不再工作了.它为第一个方程而不是第二个方程式的工作原理是什么?
因为在 C 中必须在定义数组时声明数组长度,所以使用第一个元素作为长度是否可以接受,例如
int arr[9]={9,0,1,2,3,4,5,6,7};
Run Code Online (Sandbox Code Playgroud)
然后使用这样的函数来处理数组:
int printarr(int *ARR) {
for (int i=1; i<ARR[0]; i++) {
printf("%d ", ARR[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
我看不出这有什么问题,但更愿意先咨询有经验的 C 程序员。我将是唯一一个使用代码的人。
有没有办法在OCaml中定义函数之前声明一个函数?我正在使用OCaml解释器.
我有两个功能:
let myFunctionA =
(* some stuff here..... *) myFunctionB (*some stuff *)
let myFunctionB =
(* some stuff here .... *) myFunctionA (* some stuff *)
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为myFunctionA在制作之前无法调用myFunctionB.
我做了一些谷歌搜索,但似乎找不到任何东西.我怎么能做到这一点?
ocaml functional-programming function mutual-recursion function-declaration
示例功能
func example(titles: [String]) `->` [UIButton] {
}
Run Code Online (Sandbox Code Playgroud)
我在哪里可以找到关于这个主题的更多文档(与swift中声明的函数相关的文档)?
c ×5
arrays ×2
function ×2
c++ ×1
c++11 ×1
collections ×1
declaration ×1
definition ×1
extern ×1
ios ×1
java ×1
javascript ×1
linux ×1
noexcept ×1
ocaml ×1
swift ×1
syntax ×1