2011-01-01 10 views
16

क्या तर्क एक कमांड लाइन कार्यक्रम का मुख्य विधि में पारित कर रहे हैं:ऑब्जेक्टिव-सी मुख्य दिनचर्या, क्या है: int argc, स्थिरांक चार * argv []

int main(int argc, const char * argv[]) 

पहले पूर्णांक मतलब है क्या ?

और दूसरा पैरामीटर क्या है, यह वर्णों की एक सरणी है?

कोई इनका उपयोग कैसे करेगा?

इसके अलावा, अभ्यास करने के लिए obj-c i.e. सीखने के लिए इसका उपयोग करने के अलावा, कमांड-लाइन प्रोजेक्ट प्रकार का व्यावहारिक उपयोग क्या है।

+16

@HyLian - इन दिनों कोई भी सी पृष्ठभूमि से नहीं आता है। :-) –

+1

@ मिडापर्क यह सच समस्या है! लोग पॉइंटर या बस क्या तर्क का मतलब है, इस पर कोई विचार नहीं किए बिना उद्देश्य-सी का उपयोग शुरू करते हैं। क्या पृष्ठभूमि मुझे लगता है। –

उत्तर

25

argc का अर्थ है "तर्क गणना"। यह दर्शाता है कि निष्पादन योग्य में कितने तर्क पारित किए जा रहे हैं। argv का अर्थ है "तर्क मान"। यह पात्रों की एक सरणी के लिए एक सूचक है। या किसी अन्य तरीके से इसके बारे में सोचने के लिए, यह सी तारों की एक सरणी है (क्योंकि सी तार केवल वर्णों के सरणी हैं)।

तो अगर आप एक कार्यक्रम "foo" है और इस तरह यह निष्पादित करें:

foo -bar baz -theAnswer 42 

फिर अपने main() समारोह में, argc 5 हो जाएगा, और argv हो जाएगा:

argv[0] = "/full/path/to/foo"; 
argv[1] = "-bar"; 
argv[2] = "baz"; 
argv[3] = "-theAnswer"; 
argv[4] = "42"; 
2

वह मुख्य सी से है और उद्देश्य-सी के लिए विशिष्ट नहीं है। Argc आपको अपने सी प्रोग्राम में पास की गई कमांड लाइन तर्कों की संख्या देता है। Argv सी स्ट्रिंग्स की एक सरणी है और कमांड लाइन तर्क शामिल है।

आप किसी भी समय कमांड लाइन उपकरण या एक प्रोग्राम जिसे आप कमांड लाइन से इंटरैक्ट करते हैं, लिखना चाहते थे, आप उन्हें और कमांड लाइन प्रोजेक्ट का उपयोग करेंगे।

3

बस अन्य उत्तरों में जोड़ने के लिए - उद्देश्य-सी ओएस एक्स और आईओएस दोनों को लक्षित करता है। और आईओएस कमांड लाइन अनुप्रयोगों में ज्यादा मूल्य नहीं है, ओएस एक्स पर खोल अभी भी व्यापक रूप से उपयोग किया जाता है और बहुत से लोग कमांड लाइन उपकरण लिख रहे हैं।

2

रूप wikipedia (और किसी अन्य स्रोत कहते हैं):

int main(void)

int main(int argc, char *argv[])

मापदंडों argc, तर्क गणना, और argv, तर्क वेक्टर क्रमश: संख्या और कार्यक्रम के मूल्य देना कमांड लाइन तर्क। argc और argv के नाम सी में कोई मान्य पहचानकर्ता हो सकते हैं, लेकिन इन नामों का उपयोग करने के लिए यह आम सम्मेलन है। सी ++ में, नामों को शाब्दिक रूप से लिया जाना चाहिए, और पैरामीटर सूची में "void" छोड़ा जाना चाहिए, यदि सख्त अनुरूपता वांछित है। अन्य प्लेटफार्म-निर्भर प्रारूपों को सी और सी ++ मानकों द्वारा भी अनुमति दी जाती है, सिवाय इसके कि सी ++ में वापसी प्रकार int होना चाहिए; उदाहरण के लिए, यूनिक्स (हालांकि नहीं POSIX.1) और माइक्रोसॉफ्ट विंडोज, एक तीसरा तर्क कार्यक्रम के माहौल देने की है अन्यथा stdlib.h में getenv के माध्यम से सुलभ:

int main(int argc, char **argv, char **envp)

5

main() के मापदंडों के लिए एक यूनिक्स सम्मेलन कर रहे हैं जब आपका प्रोग्राम निष्पादित होता है तो कमांड लाइन पर दिए गए तर्कों तक पहुंच प्राप्त होती है।कोको ऐप में, आप उन्हें सादे पुराने सी तरीके से एक्सेस कर सकते हैं, या आप NSProcessInfo के arguments विधि NSString ऑब्जेक्ट्स में प्राप्त करने के लिए, या NSUserDefaults का उपयोग किसी शब्दकोश में मूल्य के रूप में प्राप्त करने के लिए कर सकते हैं।

0

इसके अलावा, अभ्यास करने के लिए obj-c i.e. सीखने के लिए इसका उपयोग करने के अलावा, कमांड-लाइन प्रोजेक्ट प्रकार का व्यावहारिक उपयोग क्या है।

व्यावहारिक उपयोग आपके द्वारा लिखे गए फ्रेमवर्क या एप्लिकेशन से कोड का उपयोग करके कमांड लाइन टूल बना रहा है। हेल्पर्स, यूटिलिटीज, लॉन्च एजेंट और डिमन्स, इन सभी पृष्ठभूमि प्रक्रियाओं को आम तौर पर कमांड लाइन उपकरण के रूप में लागू किया जाता है।

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