जीसीसी को यह कहना संभव है कि इसे संरचना के लिए पैडिंग का उपयोग नहीं करना चाहिए। यह __attribute__((packed))
का उपयोग करके किया जाता है।एलएलवीएम के लिए पैक की गई संरचना (पैडिंग के बिना) कैसे घोषित करें?
typedef struct {
uint8_t startSymbol;
uint8_t packetType;
uint32_t deviceId;
uint16_t packetCRC;
} PacketData __attribute__((packed));
हालांकि, नवीनतम एक्सकोड एलएलवीएम का उपयोग करता है और विशेषता को पहचानता नहीं है। एलएलवीएम के लिए पैक की गई संरचना को कैसे परिभाषित किया जाए?
समस्या का पूरा विवरण पाया जा सकता है here
अद्यतन मैं Xcode 4.5.1 का उपयोग कर रहा आईओएस जो का उपयोग करता है एप्पल LLVM 4.1 संकलक के लिए। मुझे उपरोक्त कोड उदाहरण में एक्सकोड में "पैक किया गया" विशेषता अनदेखा हो रही है।
क्या मुझे कुछ याद आ रहा है या यह एक बहुत ही नई सुविधा हटाने है? पिछली बार मैंने चेक किया था, क्लैंग समर्थित '__attribute __ ((पैक किया गया)) ... –
क्लैंग सटीक वही '__attribute __ ((पैक))' pragma का समर्थन करता है ... – birryree
कोई जानकारी नहीं है :) मैं एक्सकोड 4.5 का उपयोग कर रहा हूं। आईओएस के लिए 1 जो ऐप्पल एलएलवीएम 4.1 कंपाइलर का उपयोग करता है। – Centurion