प्रकार int के वेरिएबल्स कथित रूप से "एक मशीन-प्रकार शब्द लंबाई में हैं" लेकिन एम्बेडेड सिस्टम में, 8 बिट माइक्रो उपयोग के लिए सी कंपाइलर्स 16 बिट्स के इंट के लिए !, (बिना हस्ताक्षर किए गए चार के लिए 8 बिट) तो अधिक बिट्स के लिए, int सामान्य रूप से व्यवहार करते हैं: 16 बिट माइक्रोस्कोस int में 16 बिट्स भी है, और 32 बिट माइक्रोस्कोस में 32 बिट्स इत्यादि हैं।हार्डवेयर की बिट चौड़ाई का पता लगाने के लिए कोई मानक तरीका है?
तो, क्या इसका परीक्षण करने का एक स्टैंडदर्शी तरीका है, BITSIZEOF (int) के रूप में कुछ?
जैसे "आकार" बाइट्स के लिए है लेकिन बिट्स के लिए है।
इसमेरा पहला विचार
register c=1;
int bitwidth=0;
do
{
bitwidth++;
}while(c<<=1);
printf("Register bit width is : %d",bitwidth);
था लेकिन यह पूर्णांक के रूप में सी लेता है, और यह, पूर्णांक के रूप में 16 बिट का उपयोग करने के 8 बिट compilers में आम है, इसलिए इसमें मेरे 16 परिणाम के रूप में देता है, ऐसा लगता है कोई "int" के रूप में "int" के लिए स्टैंडर, (या इसका सम्मान नहीं किया जाता है)
मैं इसे क्यों ढूंढना चाहता हूं? मान लीजिए मुझे कई चरों की आवश्यकता है जिन्हें 256 से कम मूल्यों की आवश्यकता है, इसलिए वे 8, 16, 32 बिट्स हो सकते हैं, लेकिन सही आकार (स्मृति और रजिस्टरों के समान) का उपयोग करके चीजों को तेज़ी से बढ़ाया जाएगा और स्मृति को बचाया जाएगा, और यदि यह नहीं हो सकता है कोड में फैसला किया, मैं हर वास्तुकला के लिए समारोह को फिर से लिखने की
संपादित उत्तर पढ़ के बाद मैं इस अच्छा लेख
http://embeddedgurus.com/stack-overflow/category/efficient-cc/page/4/ पाया
मैं निष्कर्ष (बोल्ड) जोड़ा बोली जाएगा
इस प्रकार नीचे की रेखा यह है। यदि आप कुशल, पोर्टेबल एम्बेडेड कोड लिखना शुरू करने के लिए चाहते हैं, तो पहला चरण को C99 डेटा प्रकारों 'कम से कम' और 'तेज़' का उपयोग करना शुरू करना चाहिए। यदि आपका कंपाइलर C99 अनुपालन नहीं है तो शिकायत होने तक शिकायत करें - या विक्रेताओं को बदलें। यदि आप यह परिवर्तन करते हैं तो मैं सोचता हूं कि कोड कोड में सुधार और गति में सुधार पर आप सुखद आश्चर्यचकित होंगे।
char, int, short जैसे प्रकारों का उपयोग करके खराब अभ्यास है और एम्बेडेड सिस्टम के लिए वर्जित होना चाहिए। मैंने एक कंपाइलर (कोडवायरियर) देखा है जो आपको प्रत्येक प्रकार की लंबाई बदलने की अनुमति देता है। बस टाइप प्रकारों एचडी हेडर फ़ाइल का प्रयोग करें। जटिल होने के लिए – kmalmur