मैं बाइनरी झंडे का उपयोग कर परिमित राज्य मशीन बनाने के लिए सी ++ में एक enum बना रहा हूँ। ऐसा लगता है:अधिकतम int अनुमति के मूल्यों के साथ एक enum कैसे बनाने के लिए?
enum VStates
{
NEUTRAL = 0x00000000, // 000000
// Physical Status
DRY = 0x00000001, // 000001
WET = 0x00000002, // 000010
HOT = 0x00000004, // 000100
COLD = 0x00000008, // 001000
BURNED = 0x00000016, // etc..
FROZEN = 0x00000032,
EROS = 0x00000064, //
THANATOS = 0x00000128, //
SLEEP = 0x00000256,
STUNNED = 0x00000512,
PARALYZED = 0x00001024,
POISONED = 0x00002048, //
BLIND = 0x00004096,
SOFT = 0x00008192, // Flexible
TOUGH = 0x00016384, // Resistent
MAGNETIZED = 0x00032768,
POSSEDERUNT = 0x00131072, //
// Mental Status
ANGRY = 0x00262144,
DRUGGED = 0x00524288, // Drugs Meaning
HORNY = 0x01048576, // Sexual Meaning
// Material Status
METAL = 0x02097152,
WOOD = 0x04194304,
GLASS = 0x08388608,
AIR = 0x16777216,
EARTH = 0x33554432,
DUST = 0x67108864,
LIGHT = 0x134217728,
SHADOW = 0x268435456,
WATER = 0x536870912,
// Total Status
PROTECTED = 0x1073741824,
INVULNERABLE = 0x2147483648
};
कुछ स्थिति असंगत हैं, इसलिए मैं उन्हें प्रबंधित करने के लिए बिटवाई ऑपरेटरों का उपयोग करता हूं। अब, मेरा कंपाइलर कहता है:
warning: integer constant is too large for 'long' type
क्या यह इस enum घोषित करने का सही तरीका है? मुझे चेतावनी से बचना पसंद है, मैं इस समस्या को कैसे हल कर सकता हूं?
कोई जवाब नहीं है, लेकिन यह लिखना और पढ़ने के लिए बहुत आसान होगा यदि मान हेक्स स्थिरांक के रूप में लिखे गए थे। –
@PeteBecker: वे वास्तव में * हेक्स स्थिरांक के रूप में लिखे गए हैं - लेकिन ऐसा लगता है कि वह दशमलव स्थिरांक के लिए अंकों का उपयोग कर रहा है (उदाहरण के लिए, उसके पास 0x00000512 है, जो वास्तव में 512 या 0x200 होना चाहिए)। –
@ जेरीकॉफिन - ओह। –