2009-10-08 41 views

Trả lời

14

Đó là hàm do người dùng xác định cần thiết cho chương trình thực thi. Khi bạn chạy chương trình của mình bằng ngôn ngữ được biên dịch, hàm main là những gì được thực hiện. Ví dụ, trong Java, nếu bạn có một hàm của chữ ký public static void main(String ... args) trong một lớp thì lớp đó có thể được thực thi, vì JVM sẽ thực hiện các nội dung của phương thức main đó.

Ví dụ trong Java:

public class Test { 
    public static void main(String ... args) { 
    System.out.println("Hello World"); 
    } 
} 

...

javac Test.java 

...

java Test 

Kết quả trong "Hello World" được in ra cửa sổ Console.

+4

Không bắt buộc nếu bạn yêu cầu trình liên kết sử dụng một chức năng khác làm điểm vào. –

+3

@Ryan - một số người trong chúng ta (* ho * Java * ho *) không được hưởng đặc quyền ngọt ngào khi có mối liên kết. – ChssPly76

+4

@Ryan - Một số người trong chúng tôi (* ho * me * cough *) không thích chiến đấu với người liên kết nếu chúng tôi không phải;) – aperkins

0

Trong C/C++, đây là tiêu chuẩn để nó được tích hợp sẵn và được tái tạo.

Java, không chắc chắn, không có kinh nghiệm

C# - Là một phần của lớp học do bạn xác định.

Tất cả những điều này được xác định bởi bạn - bạn cho biết phải làm gì.

3

Đó là chức năng do người dùng xác định (điểm nhập cho thực thi) ...

3

Nó không phải là "tích hợp" trong bất kỳ ngôn ngữ nào, theo nghĩa là không có tiêu chuẩn nào được triển khai cho bạn chính() avialable.

Đối với C/C++/Java, nó là một hàm có thuộc tính đặc biệt, cụ thể là hàm sẽ được gọi ở đầu chương trình của bạn sau khi hoàn tất quá trình thiết lập tĩnh. Ví dụ. con đường thực hiện toàn bộ chương trình C là:

  1. Do một số mã khởi

  2. Gọi main()

  3. Exit.

Như vậy, nó có một tuyên bố chuẩn (# các tham số truyền từ dòng lệnh + mảng của "chuỗi" - tuy nhiên ngôn ngữ thực hiện đó - đó là những lập luận thực tế từ dòng lệnh)

+0

Chỉ cần FYI - "Chính" là khá nhiều được xây dựng trong VB.NET. Bạn thực sự phải làm việc để phơi bày nó và đặt thực hiện của riêng bạn tại chỗ ... –

+0

VB có chính()? (Trung thực bất ngờ - lần tiếp xúc cuối cùng của tôi đối với bất kỳ Cơ bản nào đã trở lại vào ngày sở hữu máy tính của Sinclair Z80 ... – DVK

0

Đó là một hàm do người dùng định nghĩa được gọi bởi thư viện runtime của ngôn ngữ. Ví dụ, một thư viện runtime C sẽ lấy các đối số dòng lệnh và đôi khi các biến môi trường từ hệ điều hành và chuyển chúng vào hàm main() của bạn.

Thời gian chạy ngôn ngữ khác nhau thường thực hiện cùng một thao tác trong một biểu mẫu này hoặc biểu mẫu khác và sẽ ném một số lỗi nếu chức năng cố gắng gọi không tồn tại.

5

Tôi không chắc chắn ý của bạn là gì được tích hợp so với người dùng được xác định. Hầu như không có ngôn ngữ nào thực sự cung cấp cho hàm do người dùng định nghĩa của bạn đặc quyền là điểm vào thực sự vào chương trình. C++, bất kỳ.Ngôn ngữ NET và Java tất cả đều có các phương thức điểm vào (được xây dựng sẵn), lần lượt gọi phương thức chính do người dùng định nghĩa (hoặc bất kỳ phương thức nhập điểm nào cho ngôn ngữ đó được gọi là .NET). và VB.NET buộc nó được gọi là Main). Vì vậy, có, hầu như mọi ngôn ngữ đều có khái niệm về phương thức được gọi tự động và phương pháp này là phương pháp do người dùng xác định và thường là bắt buộc. Nhưng hầu như mọi ngôn ngữ cũng có một phương pháp nhập điểm tích hợp thực sự thiết lập khung công tác và/hoặc quản lý bộ nhớ cho quá trình trước khi gọi hàm "entry-point" do người dùng xác định của bạn.

+2

Câu trả lời hay. Tôi chỉ thêm rằng tên 'chính' không thực sự quan trọng, vì hầu hết người liên kết phù hợp sẽ cho phép bạn chỉ định điểm nhập của bạn theo cách thủ công. (ví dụ:/ENTRY cho VS) – NewbiZ

0

Tuyên bố được tích hợp sẵn. Định nghĩa của nó là do người dùng cung cấp, hoặc trong một số trường hợp được cung cấp bởi một khung ứng dụng có một số điểm vào khác, hoặc trong trường hợp của hầu hết các khung giao diện hướng sự kiện, không có điểm vào do người dùng định nghĩa.

4

Trích từ Standard C (nhấn mạnh là của tôi):

5.1.2.1 Đơn Lập môi trường

  1. Trong một môi trường freestanding (trong mà thực hiện chương trình C có thể mất nơi mà không bất kỳ lợi ích nào của hệ điều hành ), tên và loại chức năng được gọi làBắt đầu chương trìnhlà được thực hiện theo định nghĩa. Bất kỳ tiện ích thư viện nào có sẵn cho chương trình độc lập , trừ bộ tối thiểu bắt buộc theo điều 4, được xác định thực hiện.

main(), trong môi trường độc lập, rất nhiều chức năng do người dùng xác định.

0

Trong Java main (String [] args) là điểm vào cho các ứng dụng theo quy ước (để làm cho các lập trình viên C++ thoải mái). Đối với các applet hoặc servlet, việc gọi mã sẽ diễn ra khác nhau. Lưu ý rằng một cái lọ có thể chứa bất kỳ hoặc không có điểm nào trong số những điểm vào này và mỗi lớp có thể chứa một cái chính, vì vậy một cái bình đã cho có thể được gọi theo nhiều cách khác nhau như một sự tán dương nếu muốn.