2015-09-17 6 views
9

मैं एक एम्बेडेड सी स्रोत फ़ाइल में निम्न परिभाषा सामने आने वाले:अजीब परिभाषा

const preamble_t OAD_Preamble @ ".preamble" = 
{ 
    HAL_OAD_RC_MAX,  // Default program length of max if not using post-processing tool. 
    OAD_MANUFACTURER_ID, // Manufacturer ID 
    OAD_TYPE_ID,   // Image Type 
    0x00000001   // Image Version 
}; 

मैं @ हिस्से के बारे में पता नहीं है, आप कृपया मुझे इस के साथ मदद कर सकते हैं?

संपादित करें: यह आईएआर कंपाइलर में है, जिसका उपयोग टीआई एसओसीएस के साथ किया जाता है।

+2

आपके द्वारा उपयोग किए जाने वाले कंपाइलर को एक टैग जोड़ने का सुझाव देना एक गैर-मानक एक्सटेंशन है। – chux

उत्तर

9

इस तरह आप एक मेमोरी पता या एक सेक्शन निर्दिष्ट कर सकते हैं जिसमें आप अपना चर रखना चाहते हैं।

  • ".preamble", एक वर्ग का नाम है
  • OAD_Preamble चर वहाँ रखा जा रहा है।

तुम भी @ संकेत पर के बाद भौतिक पता निर्दिष्ट कर सकते हैं:

const unsigned char port_bit @ 0x1800 = BIT0; 

अधिक जानकारी this document में है।

नोट: यह एक गैर-पोर्टेबल कंपाइलर एक्सटेंशन है, मानक सी सिंटैक्स का हिस्सा नहीं है।

+0

तो यह कुछ संकलक द्वारा मान्यता प्राप्त एक विस्तार है, हां? जहां तक ​​मुझे पता है या निर्धारित कर सकते हैं, यह मानक द्वारा निर्दिष्ट नहीं है। –

+0

@ जॉन बोलिंगर हां, यह एक कंपाइलर एक्सटेंशन है। मैंने अन्य एम्बेडेड कंपाइलर्स में यह वाक्यविन्यास देखा, लेकिन मुझे पूरा यकीन है कि यह मानक नहीं है। – dasblinkenlight

+1

निश्चित रूप से एक कंपाइलर एक्सटेंशन। मैं एक ही प्रोसेसर का उपयोग करता हूं (मुझे संदेह है) एक अलग कंपाइलर है, और हम पहले लाइन पर #pragma स्थान = ADDRESS वाक्यविन्यास का उपयोग करते हैं। मुझे लगता है कि स्पष्ट, हालांकि कम कॉम्पैक्ट, और मुझे लगता है कि यह पोर्टेबल होने की अधिक संभावना है। –