2016-11-06 10 views
22

झूठी शेयरिंग से बचने के बारे this लेख में, निम्न कोड संरेखण के लिए कतरना प्रस्तुत किया है:डबल ब्रैकेट का अर्थ "[[foo()]] टाइप नाम;" सी ++ में वाक्यविन्यास?

// C++ (using C++0x alignment syntax) 
template<typename T> 
struct cache_line_storage { 
    [[ align(CACHE_LINE_SIZE) ]] T data; 
    char pad[ CACHE_LINE_SIZE > sizeof(T) 
     ? CACHE_LINE_SIZE - sizeof(T) 
     : 1 ]; 
}; 

लाइन 4 का अर्थ क्या है? मैंने कभी इस डबल ब्रैकेट वाक्यविन्यास को कभी नहीं देखा है।

उत्तर

26

यह attribute विशिष्ट वाक्यविन्यास है। इसे पहले से संकलक-विशिष्ट एक्सटेंशन (अब कुछ मानकीकृत) तक पहुंचने के लिए एक एकीकृत वाक्यविन्यास के रूप में पेश किया गया था।

इस मामले में कोड data से CACHE_LINE_SIZE बाइट्स को संरेखित करने के लिए कंपाइलर को बता रहा है।

संबंधित मुद्दे