2009-10-08 14 views

उत्तर

14

यह एक उपयोगकर्ता परिभाषित समारोह के लिए आवश्यक है कि एक कार्यक्रम पर अमल करने के लिए है। जब आप संकलित भाषा में अपना प्रोग्राम चलाने के लिए जाते हैं, तो main फ़ंक्शन निष्पादित किया जाता है। उदाहरण के लिए, जावा में, यदि आपके पास कक्षा में public static void main(String ... args) हस्ताक्षर का फ़ंक्शन है तो उस वर्ग को निष्पादित किया जा सकता है, क्योंकि JVM उस main विधि की सामग्री निष्पादित करेगा। जावा में

उदाहरण:

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

...

javac Test.java 

... "नमस्ते विश्व" में

java Test 

परिणाम कंसोल के लिए मुद्रित किया जा रहा।

+4

यदि आप लिंकर को प्रवेश बिंदु के रूप में किसी अन्य फ़ंक्शन का उपयोग करने के लिए कहते हैं तो यह आवश्यक नहीं है। –

+3

@Ryan - हम में से कुछ (* खांसी * जावा * खांसी *) एक लिंकर होने के मीठे विशेषाधिकार का आनंद नहीं लेते हैं। – ChssPly76

+4

@Ryan - हम में से कुछ (* खांसी * मुझे * खांसी *) अगर हमें नहीं करना है तो एक लिंकर के साथ लड़ना पसंद नहीं है;) – aperkins

0

सी/सी ++ में, यह मानक है इसलिए इसका निर्माण और पुन: उपयोग किया गया।

जावा, यकीन नहीं, कोई अनुभव नहीं

सी # - एक वर्ग की यह एक हिस्सा है ताकि आप के द्वारा अपने को परिभाषित किया।

इन सभी को आपके द्वारा परिभाषित किया गया है - आप बताते हैं कि क्या करना है।

3

यह एक आवश्यक उपयोगकर्ता परिभाषित समारोह (निष्पादनयोग्य के लिए प्रवेश बिंदु) ...

3

यह किसी भी भाषा में "अंतर्निर्मित" नहीं है, इस अर्थ में कि कोई मानक लागू नहीं है - आपके लिए मुख्य() उपलब्ध नहीं है।

सी/सी ++/जावा के लिए, यह एक विशेष संपत्ति के साथ एक समारोह है, अर्थात्, यह कार्य जो आपके स्थैतिक सेटअप के बाद आपके कार्यक्रम की शुरुआत में कहा जाएगा। जैसे पूरे सी कार्यक्रम के निष्पादन पथ है:

  1. कुछ प्रवर्तन कोड

  2. कॉल main()

  3. बाहर निकलें करो।

इस प्रकार, यह एक मानक घोषणा की है (कमांड लाइन + 'तार' की सरणी से पारित कर दिया मानकों के # - लेकिन भाषा को लागू करता है कि - जो कमांड लाइन से वास्तविक तर्क हैं)

+0

बस एफवाईआई - "मुख्य" VB.NET में बहुत अधिक अंतर्निहित है। आपको वास्तव में इसे बेनकाब करने और अपना स्वयं का कार्यान्वयन करने के लिए काम करना होगा ... –

+0

वीबी में मुख्य() है? (ईमानदार आश्चर्य - किसी भी बेसिक के लिए मेरा आखिरी एक्सपोजर सिंकलेयर जेड 80 पीसी स्वामित्व के दिनों में वापस था ... – DVK

0

यह एक उपयोगकर्ता परिभाषित फ़ंक्शन जिसे भाषा की रनटाइम लाइब्रेरी द्वारा बुलाया जाता है। उदाहरण के लिए, एक सी रनटाइम लाइब्रेरी कमांड लाइन तर्क और कभी-कभी ऑपरेटिंग सिस्टम से पर्यावरण चर को पकड़ लेगी और उन्हें आपके मुख्य() फ़ंक्शन में पास कर देगी।

अलग-अलग भाषा रनटाइम आम तौर पर एक ही रूप में एक ही रूप में एक ही ऑपरेशन करते हैं, और अगर किसी फ़ंक्शन को कॉल करने का प्रयास किया जाता है तो यह किसी प्रकार की त्रुटि फेंक देगा।

5

मुझे यकीन नहीं है कि अंतर्निहित बनाम उपयोगकर्ता द्वारा परिभाषित किया गया आपका क्या मतलब है। लगभग कोई भी भाषा वास्तव में आपके उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन को प्रोग्राम में सही प्रविष्टि-बिंदु होने का विशेषाधिकार प्रदान नहीं करती है। सी ++, कोई भी।नेट भाषा, और जावा सभी में छिपी हुई (अंतर्निर्मित) प्रविष्टि बिंदु विधियां हैं जो बदले में आपके उपयोगकर्ता द्वारा परिभाषित मुख्य विधि (या जो भी भाषा के लिए एंट्रीपॉइंट विधि कहा जाता है) को कॉल किया जाता है - .NET में इसे कुछ भी नाम दिया जा सकता है, हालांकि सी # और वीबीएनईटी बल इसे मुख्य कहा जाता है)।

तो हां, लगभग हर भाषा में एक विधि की अवधारणा होती है जिसे स्वचालित रूप से बुलाया जाता है, और यह विधि उपयोगकर्ता द्वारा परिभाषित विधि है और आमतौर पर अनिवार्य है। लेकिन लगभग हर भाषा में एक अंतर्निहित एंट्री पॉइंट विधि भी होती है जो वास्तव में आपके उपयोगकर्ता द्वारा परिभाषित "एंट्री-पॉइंट" फ़ंक्शन को आमंत्रित करने से पहले प्रक्रिया के लिए ढांचे और/या स्मृति प्रबंधन को सेट करती है।

+2

अच्छा जवाब। मैं बस इतना जोड़ूंगा कि 'मुख्य' नाम वास्तव में महत्वपूर्ण नहीं है, क्योंकि अधिकांश सभ्य लिंकर्स अनुमति देंगे आप मैन्युअल रूप से अपना एंट्री पॉइंट निर्दिष्ट करने के लिए। (उदाहरण के लिए/वीएस के लिए प्रवेश) – NewbiZ

0

इसकी घोषणा अंतर्निहित है। इसकी परिभाषा उपयोगकर्ता द्वारा आपूर्ति की जाती है, या कुछ मामलों में एक आवेदन ढांचे द्वारा आपूर्ति की जाती है जिसमें कुछ अन्य प्रविष्टि बिंदु होते हैं, या अधिकांश घटना-संचालित जीयूआई ढांचे के मामले में, कोई भी उपयोगकर्ता परिभाषित प्रविष्टि बिंदु नहीं होता है। सी स्टैंडर्ड से

4

उद्धरण (जोर मेरा है):

5.1.2.1 फ्रीस्टैंडिंग पर्यावरण

  1. फ्रीस्टैंडिंग वातावरण में ( में जो सी प्रोग्राम निष्पादन के बिना जगह ले सकता है ऑपरेटिंग सिस्टम का कोई लाभ), नाम और पर फ़ंक्शन का प्रकारप्रोग्राम स्टार्टअप कार्यान्वयन-परिभाषित हैं। फ्रीस्टैंडिंग प्रोग्राम के लिए लाइब्रेरी सुविधाएं क्लॉज 4, द्वारा आवश्यक न्यूनतम सेट कार्यान्वयन-परिभाषित हैं।

main(), एक फ्रीस्टैंडिंग वातावरण में, बहुत ज्यादा उपयोगकर्ता-निर्धारित कार्य है।

0

जावा मुख्य (स्ट्रिंग [] तर्क) में सम्मेलन द्वारा अनुप्रयोगों के लिए प्रवेश बिंदु (सी ++ प्रोग्रामर आरामदायक बनाने के लिए) है। एप्लेट या सर्लेट के लिए कोड का आविष्कार अलग-अलग होता है। ध्यान दें कि एक जार में इनमें से कोई भी या इनमें से कोई भी प्रविष्टि बिंदु नहीं हो सकता है और प्रत्येक वर्ग में मुख्य हो सकता है, इसलिए दिए गए जार को कई अलग-अलग तरीकों से बुलाया जा सकता है जैसे कि वांछित।

संबंधित मुद्दे