मैं इस तरह के एक संरचना है (किसी कारण मैं सिर्फ एक सरणी का उपयोग नहीं कर सकते के लिए):sizeof सदस्य गणना त्रुटि
struct OperatorData
{
char m_record_0[RIX_OPERATOR_CONFIG_SIZE];
char m_record_1[RIX_OPERATOR_CONFIG_SIZE];
//....
char m_record_9[RIX_OPERATOR_CONFIG_SIZE];
};
और मैं संकलन समय पर खेतों की मात्रा की गणना करने के लिए कोशिश कर रहा हूँ:
enum {fieldsAmount = sizeof(OperatorData)/sizeof(OperatorData::m_record_0)};
और संकलक रिपोर्ट में इस तरह के संदेश:
Error: #245: a nonstatic member reference must be relative to a specific object
enum{fieldsAmount = sizeof(OperatorData)/sizeof(OperatorData::m_record_0)};
^
मैं keil uVision3 V3.60 का उपयोग करें। इससे कोई फर्क नहीं पड़ता कि मैं संरचना के अंदर या बाहर एनम घोषणा कहां रखता हूं। संकलक इस membmer का आकार क्यों नहीं ले सकता है?
'sizeof' का तर्क एक प्रकार (यहाँ सच नहीं है) या एक एल मूल्य होना चाहिए में उपयोग करना होगा (यह भी सच नहीं है)। – Matthias
@ माथियास: ऑपरेंड को _lvalue_ होना जरूरी नहीं है; किसी भी अभिव्यक्ति की अनुमति है, जब तक इसका प्रकार 'आकार' के लिए उपयुक्त है। –
आपको यहां वर्णित डेटा संरेखण पर विचार करना चाहिए, जैसा कि यहां वर्णित है http://stackoverflow.com/a/10207185/147763 –