2013-01-19 35 views
4

所以我創建了一個簡單的程序,我通常使用GNU編譯器。未聲明的標識符用C++編程的C編程

不過,這次我選擇了使用Visual C++爲C.開發

我建立了我的項目正確,更改設置,使其在C編譯的代碼非常簡單:

#include <stdlib.h> 
#include <stdio.h> 

int main(){ 

    printf("Hey!"); 
    int x = 9; 
    printf("%d",x); 

    return 0; 
} 

如果我使用Code :: Blocks IDE和GNU編譯器進行編譯,它可以工作,但由於某些原因,它在Visual C++中不起作用。我不斷收到這些錯誤:

error C2143: syntax error : missing ';' before 'type' 

error C2065: 'x' : undeclared identifier 

我怎樣才能解決這個問題?

回答

10

VC++ 2010只實現了C89/C90,而不是新的C標準,允許在函數體內的其他語句之後使用變量聲明。爲了解決這個問題,移動的x的聲明中main開頭:

#include <stdlib.h> 
#include <stdio.h> 

int main() { 
    int x = 9; 
    printf("Hey!"); 
    printf("%d",x); 

    return 0; 
} 
+0

謝謝。我個人不喜歡,但我正在採取的課程要求我。 – turnt

1

更改文件擴展名.CPP

+2

該OP明確表示他正在編譯爲C. – ildjarn

+2

「有時候」,這個問題不僅僅是逐字逐字閱讀......如果這不能解決他的麻煩,他可以跳過它。每隔一段時間,就有人不能分辨出ANSI C,ISO C,C89,C90,C99,C11等之間的區別。您可以削弱Microsoft ANSI擴展在編譯器命令行中添加/ Za。 –

+0

「*但是,這一次我選擇使用Visual C++進行C語言開發。我已經正確地設置了我的項目,更改了設置以使它以C編譯。*」這對我來說似乎非常明確。 ; - ](注:我不是downvoter。) – ildjarn