पर विचार करें:प्रकार जीसीसी 5 में खुद के साथ असंगत जब -Wwrite-तार का उपयोग कर
char f(const char (*x)[4]);
void foo(void) {
typeof(*"FOO") x[4];
f(&x);
}
-Wwrite-strings
साथ संकलित:
gcc-5 -c gcc5.c -Wwrite-strings
आप मिल:
gcc5.c: In function ‘foo’:
gcc5.c:5:7: warning: passing argument 1 of ‘f’ from incompatible pointer type [-Wincompatible-pointer-types]
f(&x);
^
gcc5.c:1:6: note: expected ‘const char (*)[4]’
but argument is of type ‘const char (*)[4]’
char f(const char (*x)[4]);
^
एक बग की तरह लग रहा जीसीसी में, जब तक कि मुझे कुछ याद नहीं आ रहा है?
नोट: -Wwrite-strings
शाब्दिक तार के प्रकार के परिवर्तन:
जब सी संकलन, स्ट्रिंग देना प्रकार स्थिरांक "स्थिरांक चार [लंबाई]"
सी में, '*" FOO "का प्रकार' char' है। क्या '-व्राइट-स्ट्रिंग्स' को बदलना है (संकलक गैर मानक बनाते हैं)?यदि ऐसा नहीं है, तो बग '& x' के प्रकार को 'const char (*) [4]' के रूप में प्रदर्शित कर रहा है: कोई' const' नहीं है। –
एक बग की तरह लगता है। एक बग रिपोर्ट दर्ज करने पर विचार करें। – fuz
@ पास्कल क्यूओक: यहां तक कि, एक 'char (*) [4] 'एक' const char (*) [4] 'सही में परिवर्तनीय है? यह एक "असंगत सूचक प्रकार" क्यों होगा? –