谁能告诉我之间的差异int main()和int main(void)?为什么它们都工作,默认参数是int main()什么?
如何更改用gcc编译的C程序的入口点?
就像在下面的代码中一样
#include<stdio.h>
int entry() //entry is the entry point instead of main
{
return 0;
}
Run Code Online (Sandbox Code Playgroud) 以下代码在C++中是否有效?
int main() noexcept
{
}
Run Code Online (Sandbox Code Playgroud)
既铛++ 3.8.0和克++ 7.2.0 编译它细(与-std=c++14 -O0 -Wall -Wextra -Werror -pedantic-errors编译标志).
是否允许在函数规范中使用复杂条件(例如包括noexcept运算符)?noexceptmain
那么C++ 17呢?据我所知,noexcept说明符成为本标准修订版中函数类型的一部分.
根据Rust 参考资料,
如果
main存在函数(snip),并且其返回类型必须是以下类型之一:
()
Result<(), E> where E: Error
但它没有说明当main()return()或Ok(())时会发生什么Err(<value>)。
据我测试,
() |
Ok(()) |
Err(<value>) |
|
|---|---|---|---|
| 退出状态 | 0 | 0 | 1 |
| 附加行为 | - | - | Error: <value>被打印到stderr |
这些行为是否在某些文档中定义、明确解释或保证?特别是,我可以假设
返回时程序总是以1状态退出?main()Err(<value>)
main()返回时显示的错误消息Err(<value>)始终是以下形式Error: <value>?
笔记:
我想要某种有据可查的保证,而不是经验性的解释。这就是我添加#language-lawyer标签的原因。
这个问题不是关于什么时候应该使用()以及什么时候应该使用Result<(), E>?或诸如此类。如您所知,人们可以在许多文档或教程中找到此类问题的答案(或至少是提示或标准)。
更新:
TerminationTrait 最终在 Rust 1.61.0 中稳定下来(来源)。
我该如何main()在Java中声明方法?
像这样:
public static void main(String[] args)
{
System.out.println("foo");
}
Run Code Online (Sandbox Code Playgroud)
或者像这样:
public static void main(String... args)
{
System.out.println("bar");
}
Run Code Online (Sandbox Code Playgroud)
究竟有什么区别String[],String...如果有的话?
几个星期以来,我一直在以自学成才的方式学习C编程,而且我对这个main()功能有一些疑问.
所有函数必须在它们的函数原型中声明,然后在它们的定义中声明.为什么我们不必先main()在原型中声明该函数?
为什么我们要用int main()而不是void main()?
返回0在main()函数中完全做了什么?例如,如果我编写一个程序结束main()函数,会发生什么return 1;?
该标准明确规定main有两个有效(即保证有效)的签名; 即:
int main();
int main(int, char*[]);
Run Code Online (Sandbox Code Playgroud)
我的问题很简单,以下是合法的吗?
int main(const unsigned int, const char* const* argv);
Run Code Online (Sandbox Code Playgroud)
我的测试中说"是",但我不能确定的答案,因为我不能超载main改变int来unsigned int以及非顶层const的argv -ness?如果我是,那显然是禁止的.
那么,这些修改是否可以保证在符合标准的编译器上工作?
当我编写以下代码并执行它时,编译器说
不推荐使用从字符串常量转换为
char*
int main()
{
char *p;
p=new char[5];
p="how are you";
cout<< p;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这意味着我应该写const char *.
但是当我们将参数传递给main使用时,char* argv[]我们不会写const char* argv[].
为什么?
为什么Java中的main方法总是需要参数?我们为什么要String[] args每次都写,而不是在我们使用任何参数时写它?
像这样的方法会产生Main method not found编译器错误.由于我们从不对main方法使用任何参数,因此应该允许这样做.
public static void main()
{
}
Run Code Online (Sandbox Code Playgroud)
这不是面试问题.编程时我才想到它.
我的导师告诉我主线程是每个线程的父线程,但他无法解释原因.
当我写一个简单的程序时:
Class A{}
Run Code Online (Sandbox Code Playgroud)
然后它在执行时抛出异常:
java.lang.NoSuchMethodError: main Exception in thread "main"
Run Code Online (Sandbox Code Playgroud)
main()方法和主线程之间有什么关系吗?