2011-10-04 63 views
0

正如標題所說,visual studio是否通過它們的後綴?.c或.cpp來區分這兩個文件? 我也有另一種question.At第一,我說這樣的程序:visual studio如何告訴C++和c?

int main(int argc, char **argv) 
{ 
    LARGE_INTEGER TimeStart; 
    LARGE_INTEGER TimeEnd; 
    QueryPerformanceCounter(&TimeStart); 
    static double Freq; 
    static int getfreq; 
    double mu,om; 
    double *v; 
    int it,i,j; 
.... 
} 

但它帶來了很多問題:

1>sor2d.c(23): error C2143: syntax error : missing ';' before 'type' 
1>sor2d.c(24): error C2143: syntax error : missing ';' before 'type' 
1>sor2d.c(25): error C2143: syntax error : missing ';' before 'type' 
1>sor2d.c(26): error C2143: syntax error : missing ';' before 'type' 

23玲指出「靜態雙頻率;」 但如果我把「QueryPerformanceCounter(& TimeStart);」在數據分配之後,編譯器可以成功。有人告訴我爲什麼會發生這種情況,僅僅是因爲我忽略了某些東西或無知的粗心大意......?

回答

1

在C中,必須在調用任何方法之前聲明所有變量。

Visual Studio在默認情況下會將C編譯爲C文件,您可以覆蓋它。

0

在C89中,您必須在代碼塊的頂部聲明所有變量。您也可以將它們初始化爲編譯時常量(文字,擴展爲文字的宏,已經初始化的變量的值以及可以在編譯時執行的上述任何操作)。這些聲明中不能散佈其他類型的語句(如函數調用)。

此限制在C99(不受Visual C++支持)和C++中刪除。

+0

如果我使用visual studio 2010 C++環境,這個問題是否仍然存在?我可以在上面所說的設置中使用「inline」嗎?THX – shirley

+0

我不確定你的意思。如果您將該文件重命名爲'.cpp'或手動重新配置編譯器以將源視爲C++,那麼您不會遇到此問題。 'inline'關鍵字與變量聲明的順序無關。 – kbolino

+0

我的意思是我仍然使用.c作爲後綴。但是你只是說C99沒有這個問題,所以我想知道更高級別的編譯器,就像visual studio 2010有這個問題,對於內聯,我的意思是我可以在.c文件中使用內聯。 – shirley