2011-10-04 61 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