किसी कारण से, मुझे सी फाइल को संकलित करने के लिए जीसीसी का उपयोग करना चाहिए, फिर विजुअल सी ++ 2008 प्रोजेक्ट के खिलाफ लिंक करें।_alloca के बिना जीसीसी संकलन कैसे करें?
(मैं वर्तमान नवीनतम जीसीसी संस्करण इस्तेमाल किया: cygwin जीसीसी 4.3.4 20090804.)
लेकिन वहाँ एक समस्या है: जीसीसी हमेशा की तरह, _alloca के साथ एक बड़ा सरणी आवंटित
और कुलपति लिंकर नहीं कर सकते __alloca प्रतीक को हल करें।
उदाहरण के लिए,
int func()
{
int big[10240];
....
}
इस कोड को हालांकि मैं _alloca समारोह स्पष्ट रूप से फोन नहीं किया _alloca निर्भरता बनाता है।
(सरणी आकार मायने रखती है अगर मैं बदल 10240 -।> 128, सब कुछ ठीक)
मैं जीसीसी विकल्प की कोशिश की -fno-निर्मित-alloca या -fno-निर्मित है, लेकिन कोई किस्मत।
क्या जीसीसी को _alloca का उपयोग न करना संभव है? (या दहलीज समायोजित करें?)
क्यों सिर्फ 'malloc()' स्पष्ट रूप से उपयोग नहीं? –
यह मेरा लिखित स्रोत नहीं है और संपादित करने के लिए कुछ जटिल है। और शायद मूल लेखक मॉलोक को कॉल करने के लिए दंड नहीं चाहते थे। – shkim
इस मामले में एलोका का उद्देश्य यह सुनिश्चित करना है कि स्टैक इस सरणी को पकड़ने के लिए काफी बड़ा है। माइक्रोसॉफ्ट कंपाइलर को एलोका की आवश्यकता नहीं है; यह इस स्टैक जांच कोड को सीधे फ़ंक्शन में छोड़ देता है। स्थानीय लोग छोटे होने पर स्टैक जांच की आवश्यकता नहीं होती है। क्या होता है यदि आप -नो-बिल्टिन-एलोका और -फनो-बिल्टिन का उपयोग नहीं करते हैं? –