C main vs Java main

jar*_*ryd 5 c java

C main函数和Java main函数有什么区别?

int main( int argc, const char* argv[] )
Run Code Online (Sandbox Code Playgroud)

VS

public static void main(String [] args)
Run Code Online (Sandbox Code Playgroud)

这些主要功能如何与每种语言创建相关,每种语言的好处或结果如何?

Dav*_*kle 11

他们做同样的事情 - 他们都打算成为你的计划的切入点.

签名的不同之处在于Java支持的数组"知道"它们的长度是多少,而C则不然.这就是你需要的原因argc,也就是传递的参数数量.

在C中,通过使用return关键字以及整数值将成功或失败代码返回给shell .在Java中,您可以通过使用返回代码调用System.Exit(代码)来完成此操作.做同样事情的两种不同方式.

这个人对这个话题有相当的评论!


Chr*_*ett 8

C(主函数)中的入口点由C++编译器工具链中的链接器用于在指定可执行目标时运行可执行文件时运行(否则忽略该函数).此入口点是可执行规范的一部分,并且非常静态.它依赖于机器代码位于特定的具体内存地址.想象一下,我们将args数组指针和args计数放在内存中的堆栈中,该内存是在操作系统运行可执行文件时设置的,然后运行机器代码.另外,C函数有一个int返回类型,用于返回shell的失败或成功(通常是EXIT_SUCCESS(通常为0)或EXIT_FAILURE).

Java中的入口点(主方法)是动态的,因为Java本身是一种解释的JIT语言,并且依赖于使用此方法的类在类路径上,并在执行'java'命令时指定.在查找主方法驻留在字节码中的位置,然后通过字节码解释器运行内容时,需要进行一些处理.args数组也会进入堆栈以供方法体使用,但是它的设置比它更多,因为它是一个数组对象 - 我们让它在通过JNI等启动后转换它.Java在main方法中没有返回类型,但是可以抛出未经检查的异常来指示失败(可能).

  • +1经常不被理解的是,Java二进制文件的集合(类文件,可能在jar中)可能包含多个`main`方法,它只是JavaVM的参数,它指示如何找到正确的方法.从...开始.其中C/C++程序是具有单个定义入口点的已编译可执行文件,并且每个备用入口点都需要新的已编译可执行文件. (2认同)