2011-10-29 13 views
7

में __declspec (नग्न) के बराबर जीसीसी/जी ++ में समतुल्य क्या है? __declspec(naked) वास्तव में किसी भी उपकला और प्रस्ताव के बिना एक समारोह घोषित करने के लिए प्रयोग किया जाता है।जीसीसी/जी ++

+5

http://gynvael.coldwind.pl/?id=15 – SigTerm

+0

@ सिगटर्म मैं उस लिंक को पोस्ट करने वाला था, यह एक साफ हैक है। – AusCBloke

उत्तर

0

मेरा मानना ​​है कि लिनक्स के तहत हाल ही में जीसीसी के साथ ऐसा कोई समकक्ष नहीं है। संकलक उपयुक्त होने पर प्रस्तावक और उपहास उत्सर्जित करता है, और आपको उस निर्णय को छोड़ देना चाहिए। यह प्रस्तावना या उपन्यासों को बहुत छोटा, या कभी-कभी अस्तित्व में रखने में काफी अच्छा हो सकता है।

आप अपने कार्य को असेंबली में कोड कर सकते हैं। या आप अपने फ़ंक्शन के अंदर एएसएम स्टेटमेंट डाल सकते हैं।

और आपने यह नहीं बताया कि आप ऐसा क्यों करना चाहते हैं। आपका लक्ष्य क्या है, और आप ठीक से क्यों पूछ रहे हैं?

+0

आप गलत हैं, मैंने स्वयं एक बार ऐसी चीज का उपयोग किया, लेकिन अब याद नहीं कर सकता। – MetallicPriest

+3

आपने इसे जीसीसी के साथ किया था? सिगटर्म द्वारा संदर्भित पृष्ठ मैंने जो कहा है उसके अनुसार है: यदि आप जीसीसी और लिनक्स (x86 या AMD64 लक्ष्य मशीनों पर) के साथ कोई प्रस्तावना या उपन्यास नहीं चाहते हैं, तो एएसएम का उपयोग करें। –

+0

वैसे, वास्तव में कुछ है, लेकिन केवल कुछ (एम्बेडेड) आर्किटेक्चर के लिए, जैसा कि आप स्वयं को एक टिप्पणी में दर्शाते हैं। – ninjalj

7

कुछ आर्किटेक्चर पर, जीसीसी "नग्न" नामक एक विशेषता का समर्थन करता है; सबसे हालिया gcc docs मैंने आर्किटेक्चर की यह सूची दी है: एआरएम, एवीआर, एमसीओआर, आरएक्स और एसपीयू।

आप उन आर्किटेक्चर में से एक (जीसीसी अगर आप इसे इस्तेमाल करने की कोशिश आप एक चेतावनी दे देंगे और यह समर्थित नहीं है) का उपयोग कर रहे हैं, तो, विशेषता इस तरह इस्तेमाल किया जा सकता:

__attribute__ ((naked)) int fun() 
{ 
} 

[हाल ही में "नग्न" विशेषता को अधिक सामान्य सुविधा के रूप में जोड़ने और अधिक आर्किटेक्चर पर इसका समर्थन करने की कोशिश करने के बारे में जीसीसी डेवलपर सूची में कुछ चर्चा हुई है, लेकिन जाहिर है कि यह आपकी मदद नहीं करता है :)।