2012-03-09 13 views
13

निर्माण (int) { 1 } कैसे सी में बुलाया जाता है? एक अनुमान "अज्ञात स्थिर" था, लेकिन यह Google पर कोई उपयोगी नहीं दिखाया। एक sidenote के रूप में, आप इस निर्माण का उपयोग ioctl को बताने के लिए कर सकते हैं कि आप एक चर का उपयोग 1: ioctl (..., &(int) { 1 }) के मान के साथ करना चाहते हैं।यह निर्माण (int) {1} कैसे कहा जाता है?

+0

ध्यान दें कि 'int'' {1} 'के लिए गलत प्रकार है। यह '(int []) {1}' होना चाहिए। –

+2

@ jorgensen: नहीं, यह मान्य है। प्रकार कोष्ठक वाले भाग द्वारा निर्धारित किया जाता है और यह 'सरल' जैसे साधारण प्रकार का हो सकता है। –

उत्तर

13

इसे "compound literal" कहा जाता है और एक अस्थायी int -typed lvalue बनाता है।

+0

लिंक के लिए धन्यवाद। – Sven

+0

ध्यान दें कि यौगिक अक्षर भी ऐसे हैं जो एक पॉइंटर के माध्यम से पारित होते हैं, जैसा कि यहां किया जाता है, बदला जा सकता है। उपर्युक्त कॉल में अस्थायी मान को ioctl() द्वारा संशोधित किया जा सकता है जो संभावित रूप से हार्ड-टू-बग बग हो सकता है। –

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