मैं किसी प्रोग्राम के लिए किसी प्रकार का फ्रंटएंड बना रहा हूं। प्रोग्राम को लॉन्च करने के लिए मैं कॉल का उपयोग कर रहा हूं CreateProcess()
, जो अन्य चीजों के बीच एक STARTUPINFO
संरचना को एक संकेतक प्राप्त करता है । मैं जो संरचना करता था उसे आरंभ करने के लिए:
STARTUPINFO startupInfo = {0}; // Or even '\0'.
startupInfo.cb = sizeof(startupInfo);
जीसीसी के साथ कार्यक्रम को संकलित करते हुए चेतावनियों के इन सेटों को सक्षम करने से -Wall -Wextra
मुझे यह कहते हुए चेतावनी मिलती है कि पहली पंक्ति की ओर इशारा करते हुए एक लापता आरंभीकरण है।
warning: missing initializer
warning: (near initialization for 'startupInfo.lpReserved')
इसलिए मैंने करना समाप्त कर दिया:
STARTUPINFO startupInfo;
memset(&startupInfo, 0, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
और इस तरह संकलक कोई चेतावनी नहीं देता है। सवाल यह है कि किसी संरचना को शुरू करने के इन तरीकों में क्या अंतर है? पहली विधि का उपयोग करना, क्या संरचना आरम्भिक नहीं है? तुम किसकी सिफारिश करना चाहोगे?
struct struct_with_four_fields x = {1, 2, 3};
जहां 4 में से केवल 3 सदस्य आरंभिक हैं।