在编程时我是初学者,但我确信其中一个通用规则是程序以Main()开头.我在创建WPF项目时没有看到一个.Main()只是在WPF中以不同的方式命名?
我只是在读书
ISO/IEC 9899:201x委员会草案 - 2011年4月12日
我在5.1.2.2.3程序终止下找到了
..reaching the } that terminates the main function returns a value of 0.
Run Code Online (Sandbox Code Playgroud)
这意味着如果你没有指定任何return语句main(),并且如果程序成功运行,那么在main的右括号中将返回0.
但是在下面的代码中我没有指定任何return语句,但它不返回0
#include<stdio.h>
int sum(int a,int b)
{
return (a + b);
}
int main()
{
int a=10;
int b=5;
int ans;
ans=sum(a,b);
printf("sum is %d",ans);
}
Run Code Online (Sandbox Code Playgroud)
编
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
Run Code Online (Sandbox Code Playgroud) 似乎argv[argc]总是NULL如此,所以我认为我们可以不用遍历参数列表argc.单个while循环将执行此操作.
如果总有一个NULL结束argv,为什么我们需要一个argc?
我问,因为我的编译器似乎这么认为,即使我没有.
echo 'int main;' | cc -x c - -Wall
echo 'int main;' | c++ -x c++ - -Wall
Clang没有发出任何警告或错误,gcc只发出温和的警告:'main' is usually a function [-Wmain]但是只有在编译为C时才指定.指定a -std=似乎并不重要.
否则,它编译和链接很好.但在执行时,它立即终止SIGBUS(对我来说).
阅读(C)和C++中main()返回的(优秀)答案?和快速的grep通过语言规范,这肯定会似乎对我来说,一个主要的功能是必需的.但是gcc -Wmain('main' 通常是一个函数)的冗语(以及这里的错误缺失)似乎可能暗示其他情况.
但为什么?是否有一些奇怪的边缘案例或"历史"用途?谁知道什么给了?
我想,我的观点是,我认为这应该是托管环境中的错误,是吗?
这是一个简单的问题,但我一直看到相互矛盾的答案:C++程序的主程序应该返回0还是EXIT_SUCCESS?
#include <cstdlib>
int main(){return EXIT_SUCCESS;}
Run Code Online (Sandbox Code Playgroud)
要么
int main(){return 0;}
Run Code Online (Sandbox Code Playgroud)
它们是完全相同的吗?应该EXIT_SUCCESS只与exit()?一起使用?
我认为EXIT_SUCCESS这是一个更好的选择,因为其他软件可能想要将零视为失败,但我也听说如果你返回0,编译器无论如何都能够将它改为不同的值.
int main( const int argc , const char[] const argv)
Run Code Online (Sandbox Code Playgroud)
正如有效的C++第3项规定"尽可能使用const",我开始思考"为什么不制作这些'常数'参数const"?
是否存在argc在程序中修改值的任何情况?
我是Ruby的新手.我想从包含我想要继续单独使用的工具的模块导入函数.在Python中我会这样做:
def a():
...
def b():
...
if __name__ == '__main__':
a()
b()
Run Code Online (Sandbox Code Playgroud)
这允许我运行程序或将其作为模块导入以使用a()和/或b()单独使用.Ruby中的等效范例是什么?
考虑以下计划:
#include <iostream>
int main = ( std::cout << "C++ is excellent!\n", 195 );
Run Code Online (Sandbox Code Playgroud)
在Windows 7操作系统上使用g ++ 4.8.1(mingw64),程序编译并运行正常,打印:
C++非常棒!
到控制台.main似乎是一个全局变量而不是一个函数; 如果没有该功能,该程序如何执行main()?这段代码是否符合C++标准?程序的行为是否定义明确?我也使用了该-pedantic-errors选项,但该程序仍然编译并运行.
我知道一个很酷的快捷方式System.out.println():sysout Ctrl+ Space.
有类似的东西public static void main(String args[])吗?
许多程序对许多参数和字符串数组使用标准名称.主要功能的原型如下:int main(int argc, char *argv[]);.但如果我为这些变量选择自定义名称,我会破坏一些东西吗?
例如 int main(int n_of_args, char *args[]);
在编译器的上下文中,一切都很好.这些变量对于main函数是本地的,因此它们可以具有任何名称.简单的代码构建和运行完美.但这些名称可能由预处理器使用.那么重命名这些论点是否安全?
PS我个人觉得这些名字很糟糕,因为它们看起来很相似,只有一个字母不同.但是每个人都出于某种原因使用它们.