2011-10-04 5 views
0

タイトルによれば、ビジュアルスタジオはこれら2つのファイルを接尾辞?.cまたは.cppで区別しますか? 私はまた別のquestion.Atは最初、私はこのようなプログラムを述べている:ビジュアルスタジオは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を「静的なダブルのFreq。」 しかし、私は "QueryPerformanceCounter(& TimeStart);"データの割り当て後、コンパイラは成功することができます。なぜ誰かが私にこの事が起きた理由を教えてもらえませんか?何かを無視したり無視したりする不注意が原因です。

答えて

1

Cでは、すべての変数を宣言してからメソッドを呼び出す必要があります。

Visual Studioはデフォルトで.CファイルをCとしてコンパイルします。これを上書きすることができます。

0

C89では、すべての変数をコードブロックの先頭に宣言する必要があります。コンパイル時定数(リテラル、リテラルに展開されるマクロ、すでに初期化された変数の値、およびコンパイル時に実行可能な上記の操作)にコンパイル時定数を初期化することもできます。これらの宣言内に他のタイプの文(関数呼び出しなど)を散在させることはできません。

この制限はC99(Visual C++ではサポートされていません)とC++では削除されています。

+0

私はビジュアルスタジオ2010のC++環境を使用している場合、この問題はまだ存在するはずですか?上記の設定で「インライン」を使用できますか?THX – shirley

+0

あなたは何を意味するのか分かりません。ファイル名を '.cpp'に変更した場合や、ソースをC++として扱うようにコンパイラを手動で再設定した場合、この問題は発生しません。 'inline'キーワードは変数宣言の順序とは関係ありません。 – kbolino

+0

私はまだ接尾辞として.cを使用していますが、C99にはこの問題がないと言われていますので、Visual Studio 2010のようなより高いレベルのコンパイラにもこの問題がありますか? .cファイルでインラインで使用する。 – shirley

関連する問題