से संबंधित # डिफाईन है, मैं एक मैक्रो के साथ मुख्य बना रहा हूं और उपयुक्त समय उत्पन्न करने के लिए संकलित समय,/सबस्टेस्टम: विन्डोज़ या/सबस्टेस्टम: कंसोल पर चयनित उप-सिस्टम की जांच करने में सक्षम होना चाहिए। मुख्य कार्य। क्या कोई # डिफाईन है जो मैं देख सकता हूं कि यह पूरा करता है?क्या उप-प्रणाली
उत्तर
यदि आप अपनी लाइब्रेरी के उपयोगकर्ताओं (या जो भी हो) के लिए चीजों को आसान बनाने की कोशिश कर रहे हैं, तो आप अपने मैक्रो से केवल WinMain
और main
दोनों उत्पन्न कर सकते हैं। डिफ़ॉल्ट रूप से लिंकर main
पर शुरू करने के लिए कंसोल ऐप्स सेट करता है, और Win32 ऐप्स WinMain
पर शुरू करने के लिए सेट करता है। अन्य "मुख्य" फ़ंक्शन को अनदेखा कर दिया जाएगा।
(संभवतः कोड के बाकी, मुख्य कार्य तर्कों (argc
, argv
, hInstance
, आदि) में से किसी का उपयोग नहीं करता है, तो यह दोनों के साथ काम करने के लिए।)
_CONSOLE
परिभाषित किया जा सकता है , लेकिन यह स्वचालित रूप से प्रकट नहीं होता है; आपको इसे प्रोजेक्ट गुणों में मैन्युअल रूप से जोड़ना होगा। दूसरी तरफ स्टार्टअप प्रतीक का चयन स्वचालित है। तो बस दोनों कार्यों को प्रदान करना, और लिंकर चुनने देना, जीवन को आसान बना सकता है, क्योंकि प्रोजेक्ट निर्माता को कुछ भी सेट अप करने की आवश्यकता नहीं होती है, और वास्तव में विंडोज़ से कंसोल ऐप (संभावित रूप से यहां तक कि प्रति-कॉन्फ़िगरेशन) को स्विच किए बिना स्विच कर सकता है कुछ भी।
_CONSOLE
आपके लिए चाल चलाना चाहिए।
यदि आप वास्तव में इस मार्ग पर जाना चाहते हैं तो आप #pragma comment(linker, "/subsystem:windows")
या #pragma comment(linker, "/subsystem:console")
का उपयोग करके उपप्रणाली का चयन कर सकते हैं।
यह निश्चित रूप से बेहतर उत्तर है क्योंकि यह सीधे सिस्टम बनाम मैन्युअल रूप से निर्दिष्ट करने के मूल प्रश्न का उत्तर देता है। लिंकर को इसे निर्धारित करने (या परियोजना सेटिंग्स को बदलने) को देना। –
'_CONSOLE' कैसे परिभाषित किया जाता है? – jww
ऐसा नहीं है कि यह वास्तव में कैसे काम करता है। आपको एक मूल विंडोज ऐप बनाम कंसोल ऐप में नाटकीय रूप से अलग कोड लिखना होगा। एक कंसोल ऐप में, आप आउटपुट का उत्पादन करने के लिए printf या cout का उपयोग करते हैं, यदि माउस के लिए कोई उपयोग नहीं है तो बहुत कुछ नहीं है। एक मूल विंडोज ऐप को एक संदेश लूप की आवश्यकता होती है और खिड़की को अद्यतन करने के लिए WM_PAINT संदेश का पता लगाने वाली विंडो प्रक्रिया के साथ एक विंडो बनाना आवश्यक है। आदि।
लेकिन आप कोड लिख सकते हैं जो दोनों करता है। बस एक मुख्य() और WinMain() फ़ंक्शन दोनों लिखें, सीआरटी स्वचालित रूप से सही कॉल करता है।
+1: मैं दोनों कार्यों को लिखता हूं। – Puppy
जबकि आपके द्वारा किए गए बयान सत्य हैं, वे पूरी कहानी नहीं बताते हैं। एक छोटे से tweeks के माध्यम से कंसोल उपप्रणाली के साथ या उसके बिना काम करता है कि एक आवेदन लिखना संभव है। आम तौर पर यह एक खिड़की रहित अनुप्रयोग होगा (या यह केवल संदेश बॉक्स को कॉल कर सकता है) और कोई UI थ्रेड नहीं है। मानक पाइप गैर-कंसोल ऐप्स के लिए भी उपलब्ध हैं, हालांकि निश्चित रूप से उनके आउटपुट को तब तक नहीं देखा जाएगा जब तक कि रीडायरेक्ट नहीं किया जाता। – Tergiver
दरअसल। मेरे सभी ऐप्स डिबग बिल्ड में कंसोल ऐप्स हैं, और यह मूल रूप से अतिरिक्त कोड की 6 पंक्तियां हैं: एक मुख्य फ़ंक्शन जो 'WinFain (0,0,0,0)' वापस करता है, सभी '#ifdef _CONSOLE' के अंदर। आपको वास्तव में '# ifdef' की भी आवश्यकता नहीं है। –
- 1. उपप्रणाली और घटक
- 2. लिनक्स कर्नेल टाइमर उपप्रणाली: प्रेसिजन बनाम संकल्प
- 3. मैं कोडबॉक्स अतिरिक्त लिंकर विकल्पों में उपप्रणाली कैसे निर्दिष्ट कर सकता हूं?
- 4. मैं सिमुलिंक में उपप्रणाली ब्लॉक पर आईओ बंदरगाहों के प्रदर्शन को कैसे समायोजित कर सकता हूं?
- 5. लिंक: घातक त्रुटि LNK1221: एक उपप्रणाली अनुमानित नहीं किया जा सकता है और इसे
- 6. मैं sysfs और CPUFREQ उपप्रणाली का उपयोग कर मैन्युअल रूप से सीपीयू आवृत्ति कैसे बदल सकता हूं?
- 7. एंटरप्राइज़ जावा बीन वास्तव में क्या है?
- 8. उपयोग करने के लिए सर्वश्रेष्ठ डिज़ाइन पैटर्न: एडाप्टर या मुखौटा
- 9. udev
- 10. मोबाइल डिवाइस पर कैनवास और वेबजीएल (तीन.जेएस) का समर्थन?
- 11. डीएलएल से ऑब्जेक्ट पास करने और वापस करने के लिए कैसे?
- 12. vhfm के बिना ffmpeg वॉटरमार्क?
- 13. पॉज़िक्स ने मेमोरी बनाम मैप किए गए फाइलों को साझा किया
- 14. वेब अनुप्रयोग में हाइबरनेट द्वितीय-स्तरीय कैश के लिए सिंगलटनएह कैशरेगियन फैक्टरी बनाम एह कैश रेगियन फैक्टरी का उपयोग करने के क्या प्रभाव हैं?
- 15. एक नकली क्या है और आप इसका कब उपयोग करना चाहिए?
- 16. कई आवंटकों का कुशलतापूर्वक उपयोग करना
- 17. सर्वर के अनुकूल slowban। मुमकिन?
- 18. क्या
- 19. क्या
- 20. क्या
- 21. क्या
- 22. क्या
- 23. क्या
- 24. क्या
- 25. क्या
- 26. क्या
- 27. क्या
- 28. क्या
- 29. क्या
- 30. क्या भविष्य में लपेटे जाने पर अभिनेता संदेशों को अवरुद्ध करना ठीक है?
आपको मुख्य कार्य नहीं करना चाहिए, क्योंकि इसे उत्पन्न करना आपके लिए बेकार है और दूसरों के लिए बाधा है। अर्थात। यह करने के लिए नकारात्मक उपयोगिता है। लेकिन यदि आप ऐसा करते हैं, जैसे 'मुख्य' फ़ंक्शन उत्पन्न करने पर नरक-झुकाव, तो * मानक 'मुख्य' * उत्पन्न करें। यह ठीक काम करता है चाहे निर्माण के उपप्रणाली। नोट: माइक्रोसॉफ्ट टूल्स के साथ, जो इस विभाग में थोड़ा चुनौतीपूर्ण हैं, लिंकर विकल्प '/ एंट्री: mainCRTStartup' सेट करें जब तक कि आप एक एमएफसी एप्लीकेशन नहीं कर रहे हैं, इस मामले में आप दूसरों की समस्या (अर्थात् माइक्रोसॉफ्ट) की समस्या के खिलाफ हैं 'मुख्य' पर लेने का वही वास्तव में बुरा विचार था। –