几年前,除了最简单的Perl脚本之外,我采用了以下"模式":(我甚至不记得我先看到它的位置,这当然不是我真正的想法.)
use strict;
...
sub main {
...
}
... possibly more subs ...
... at the end of the file:
#############
# Call main #
&main();
#############
Run Code Online (Sandbox Code Playgroud)
这有什么好处吗?我发现代码有点干净,但除此之外我不确定这有什么目的让我的C程序员开心:-)
来自Perl专家和高级用户的任何见解表示赞赏.(我当然不是)
C++03 3.6.1.3:函数main不得在程序中使用(3.2)....
我想知道为什么这个规则存在...是否有人知道任何系统/实现,如果使用main,它将是一个问题?
PS 1.我知道该术语的定义used.2.我知道有一些简单的解决方法,比如从main()调用单个MyMain()并使用MyMain()代替.3.问题是关于现实世界的实施,如果不存在限制则会产生问题.谢谢!
为什么main()用户定义了功能?
我什么时候会使用void main()和int main()?
我正在编写一个包含多个包的程序.每个包都有自己的主程序,我希望在解释器执行.jar时同时启动它们.这似乎是一个相当简单的问题,但当我环顾四周时,似乎人们正在使用蚂蚁(我之前从未使用过)和其他方法.在Eclipse中是否有一种更简单的方法来编译具有多个启动配置的.jar,更好的是,有没有办法对其进行硬编码?
如果推出这个的最好方法是通过蚂蚁.如果我想要发布,我会写什么样的蚂蚁脚本...说com.myapp.package1.main,com.myapp.package2.main和com.myapp.package3.main包中的主要程序.提前致谢!
我试图更好地理解基本iOS应用程序中包含的每个文件的用途.
有没有理由修改main.m文件?我想知道是否需要触及该文件.如果你修改它,为什么?
一个鲜为人知但几乎从未使用过的C++特性的声明是:
void foo();
Run Code Online (Sandbox Code Playgroud)
一种可能的法律定义可能是:
void foo() try {
throw 42;
}
catch(...) {
}
Run Code Online (Sandbox Code Playgroud)
这里包含的整个函数实现在try/ catchpair中,这似乎与允许它相似.
那是合法的int main()吗?例如:
int main() try {
throw 42;
}
catch(...) {
}
Run Code Online (Sandbox Code Playgroud)
main,n3290§3.6.1 的规则主要讨论它应该采取什么样的论据以及它返回什么 - 它们似乎并没有明确地禁止它,因为它们与你可能想要尝试的各种其他奇怪事物(例如联系)一样.
这是合法的,定义明确吗?
以下程序完美编译,没有错误或警告(即使有-Wall)在g ++中,但立即崩溃.
#include <cstdio>
int stuff(void)
{
puts("hello there.");
return 0;
}
int (*main)(void) = stuff;
Run Code Online (Sandbox Code Playgroud)
这是一个(显然可怕的误导)尝试运行C++程序而没有明确声明main作为函数.我打算通过将程序stuff绑定到符号来执行程序main.我很惊讶这个编译,但为什么它失败了,编译?我看过生成的程序集,但我完全不了解它.
我完全清楚对如何定义/使用有很多限制main,但我不清楚我的程序如何打破它们中的任何一个.我没有重载main或者在我的程序中调用它...所以我通过main这种方式确定了什么规则?
注意:这不是我在实际代码中尝试做的事情.它实际上是尝试用C++编写Haskell的开始.
在C89/C99/C11中,在独立环境中,入口点功能是实现定义的.在托管环境中,它必须int main符合严格的程序.大多数现代编译器都会void main出错.但是,我看到很多用户使用void main.即使在不合格的编译器中允许它,为什么要使用它?我认为没有任何实际理由void main可以优先考虑int main.即使在C89中,它也是未定义的行为return.
是否有人气的历史原因void main?
我不相信我的问题主要是基于意见的.一些有效的想法已经在这个帖子中提出过,例如微软的void main扩展,以及Window的受欢迎程度,以及它是C书重印不正确信息的结果.这些是客观和历史原因.
这可能是一个简短而简单的问题,但我从来没有找到一个令人满意的答案:
main()函数通常在大型C++项目中包含哪些代码?认为它通常只是初始化一个(包装)类对象并在其中调用一个函数来设置它是不正确的假设?
为什么main()不是第一个方法?它是否保持与C的向后兼容性?
我的软件有一个主要用于正常使用,另一个用于单元测试.如果gcc有一个选项来指定使用哪个"主要"功能,我会喜欢它.
c++ ×5
c ×3
cocoa-touch ×1
entry-point ×1
gcc ×1
ios ×1
java ×1
launch ×1
objective-c ×1
oop ×1
perl ×1
standards ×1