2015-03-30 4 views
7

में अनुमति दी गई है मुझे निम्न त्रुटि मिल रही है, std = c99/std = gnu99 मोड क्या है?त्रुटि: 'for' लूप प्रारंभिक घोषणाओं को केवल C99 मोड

स्रोत कोड:

#include <stdio.h> 

void funct(int[5]); 

int main() 
{   
    int Arr[5]={1,2,3,4,5}; 
    funct(Arr); 
    for(int j=0;j<5;j++) 
    printf("%d",Arr[j]); 
} 

void funct(int p[5]) { 
     int i,j; 
     for(i=6,j=0;i<11;i++,j++) 
      p[j]=i; 
} 


Error Message: 
hello.c: In function ‘main’: 
hello.c:11:2: error: ‘for’ loop initial declarations are only allowed in C99 mode 
for(int j=0;j<5;j++) 
    ^
hello.c:11:2: note: use option -std=c99 or -std=gnu99 to compile your code` 
+2

आपको या तो लूप के बाहर जे घोषित करने की आवश्यकता है, या संकलन का उपयोग करके संकलित करना होगा -std = c99 विकल्प त्रुटि संदेश राज्यों की तरह। – Loocid

उत्तर

16

यह इसलिए होता है क्योंकि पाश के लिए एक के अंदर चर घोषित करने मान्य सी जब तक C99 (जो 1999 में प्रकाशित सी के मानक है), तो आप या तो बाहर अपने काउंटर के रूप में के लिए दूसरों को या द्वारा बताया घोषणा कर सकते हैं नहीं था संकलक को स्पष्ट रूप से बताने के लिए -std = c99 ध्वज का उपयोग करें कि आप इस मानक का उपयोग कर रहे हैं और इसे इस तरह समझना चाहिए।

+1

बहुत बहुत धन्यवाद Alejandro। क्या आप कृपया मुझे बताएं कि linux संकलन में -std = c99 ध्वज का उपयोग कैसे करें ?? –

+2

@ राजजीराजन बस अपनी कमांड लाइन यानी 'gcc main.c -o main -std = c99' –

1

आप पाश से पहले पाश के लिए पहले के लिए इस्तेमाल किया चर जे घोषित करने के लिए की जरूरत है।

int j; 
    for(j=0;j<5;j++) 
    printf("%d",Arr[j]); 
-3

यह "प्रो डॉ माइकल Helbig" द्वारा

#include <stdio.h> 

    void funct(int[5]); 
    int main() 
    { 
     int Arr[5]={1,2,3,4,5}; 
     int j = 0; 

     funct(Arr); 

     for(j=0;j<5;j++) 
     printf("%d",Arr[j]); 
    } 
    void funct(int p[5]){ 
     int i,j; 
     for(i=6,j=0;i<11;i++,j++) 
      p[j]=i; 
    } 
+1

पर' -std = c99' जोड़ें 'ओपी के लिए एक स्पष्टीकरण सहायक होगा। – Jamal

0

सबसे आसान समाधान काम हो जाएगा कोड। यह आपके मोड को c99 पर स्विच करेगा, इसलिए आपको फ़ाइल बनाने में हर बार ध्वज जोड़ने की आवश्यकता नहीं है http://www.bigdev.de/2014/10/eclipse-cc-for-loop-initial.html?showComment=1447925473870#c6845437481920903532

समाधान: अपने कंपाइलर के लिए विकल्प -std = c99 का उपयोग करें! यहां जाएं: प्रोजेक्ट> प्रॉपर्टीज> सी/सी ++ Buils> सेटिंग्स> टूल सेटिंग्स> जीसीसी सी कंपाइलर> डायलेक्ट> भाषा मानक: "आईएसओ सी 99"

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