एक बार फिर How to fix this segmentation error in a sequence inverting program? में एक बेवकूफ अप्रारंभीकृत चर त्रुटि।मुझे इस छोटे उदाहरण में जीसीसी से "अप्रयुक्त प्रारंभिक" चेतावनी क्यों नहीं मिल रही है?
तो मैं "-Wall
झंडे का उपयोग करें" टिप्पणी दोहराने जा रहा था, लेकिन जब मैंने चेतावनियों के खिलाफ कोड का परीक्षण किया, तो मुझे अपने महान आश्चर्य की कोई चेतावनी नहीं मिली।
तो मैं इसे इस नीचे के लिए कांट छांट (इस कोड निष्पादन उद्देश्यों के लिए कोई मतलब नहीं है, लेकिन यह दिखाता है कि मैं क्या दिखाना चाहते हैं):
#include <stdio.h>
int main()
{
int i,len=12;
/* printf("%d\n",i); */
while(i!=len-1)
{
i++;
len--;
}
return 0;
}
जब यह संकलन gcc
4.7.3 और 6.2.1 का उपयोग कर
gcc -Wall -Wextra -pedantic
मुझे कोई चेतावनी मिल का उपयोग करते हुए, जबकि i
टूक while
पाश में उपयोग करने से पहले आरंभ नहीं किया है।
अब अगर मैं printf
बयान uncomment मैं:
warning: 'i' is used uninitialized in this function [-Wuninitialized]
तो क्यों चेतावनी जारी की है जब i
printf
लेकिन while
परीक्षा में नहीं गुजर?
(यह क्योंकि मेरे मामले में gcc failing to warn of uninitialized variable के अलग है, वहाँ कोई शाखाएं हैं है)
(एक बग की तरह लगता है, लेकिन यह इतना तुच्छ है कि मुझे आश्चर्य है अगर मैं कुछ बड़ा लापता नहीं कर रहा हूँ है।)
क्यों i = 0 असाइन नहीं करते? –
@ डॉजीक ने क्या आपने सवाल पढ़ा? – bolov
क्या आप अलग-अलग परिणाम प्राप्त करते हैं यदि आप भाषा मानक के विशिष्ट संस्करणों को -std = .... के माध्यम से मजबूर करते हैं? – SirDarius