के लिए चेतावनी दी है नहीं करता है मुझे आश्चर्य है कि क्यों जीसीसी (4.6.3) मुझे इस उदाहरण में पहुँच योग्य नहीं कोड के लिए कोई चेतावनी देता है:जीसीसी नहीं पहुंचा जा सकता कोड
#include <stdio.h>
int status(void)
{
static int first_time = 1;
if (first_time) {
return 1;
first_time = 0; /* never reached */
} else {
return 0;
}
}
int main(int argc, const char *argv[])
{
printf("first call %d\n", status());
printf("second call %d\n", status());
return 0;
}
ध्यान दें, दोषपूर्ण status()
के प्रयोजन एक स्थिति बनाए रखने के लिए समारोह था। मुझे -Wall
के साथ इसके लिए चेतावनी मिलने की उम्मीद थी। मैंने -Wunreachable-code
, -Wextra
, -pedantic
और -ansi
(जैसा कि here पर चर्चा की गई थी) की कोशिश की। फिर भी, उनमें से कोई भी मुझे चेतावनी नहीं देता है।
ऐसा लगता है कि जीसीसी चुपचाप स्थैतिक चर असाइनमेंट को हटा देता है।
मेरी राय में gcc विकल्प -Wall -Werror
को एक त्रुटि फेंकनी चाहिए।
लेकिन first_time = 0 असाइनमेंट पर पहुंच गया कभी नहीं किया जा सकता। - प्रयोज्य-कोड का उद्देश्य क्या है, अगर यह इस तरह के अपर्याप्त कोड के लिए कोई चेतावनी नहीं उठाता है? –
इसके अलावा आपका उदाहरण अलग है। Argc के मान के आधार पर आपका "कई कोड" पहुंचा जा सकता है। –