यहाँ एक कोड है -अमान्य रूपांतरण करने के लिए *
1 int main(int argc, char *argv[])
2 {
3 signed char S, *psc;
4 unsigned char U, *pusc;
5 char C, *pc;
6
7 C = S;
8 C = U;
9
10 pc = psc;
11 pc = pusc;
12
13 return 0;
14 }
$ gcc test.cpp -o a
test.cpp: In function ‘int main(int, char**)’:
test.cpp:10:7: error: invalid conversion from ‘signed char*’ to ‘char*’ [-fpermissive]
test.cpp:11:7: error: invalid conversion from ‘unsigned char*’ to ‘char*’ [-fpermissive]
यह एक इंटेल 32-बिट मशीन पर उबंटू 12.10 पर जीसीसी संस्करण 4.6.3 पर संकलित किया गया है।
कि char
प्रकार को ध्यान में रखते unsigned char
86 पर है। -
यदि गैर-सूचक प्रकार के लिए लाइन 7 और 8 पर असाइनमेंट ठीक है, तो लाइन 10 और 11 पर पॉइंटर प्रकारों के लिए त्रुटियों को क्यों फेंक दिया जाता है?
इसके अलावा, C = U
किसी कलाकार की आवश्यकता के बिना सफल होना चाहिए?
क्या आप इस शब्द ["सख्त एलियासिंग"] से परिचित हैं (http://cellperformance.beyond3d.com/articles/2006/06/understanding-strict-aliasing.html)? – WhozCraig
उस सामान को पढ़ना ... – nightlytrails
'-fpermissive' आपकी मदद कर सकता है, और इस त्रासदी को अनदेखा कर सकता है। समय-समय पर आप अस्थायी रूप से टैग को फिर से निकालना चाहते हैं और देख सकते हैं कि आपके कंपाइलर को आपके प्रोजेक्ट में इस से अन्य त्रुटियां मिलती हैं कि आपको * चिंता करना चाहिए। – rsethc