2011-10-04 4 views
0

Как гласит название, визуальная студия отличает эти два файла своим суффиксом? .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

Если я использую Visual Studio 2010 C++, эта проблема все еще должна существовать? Могу ли я использовать «inline» в настройке, указанной выше? THX – shirley

+0

Я не уверен, что вы имеете в виду. Если вы переименуете файл в '.cpp' или вручную переконфигурируете компилятор для обработки исходного кода как C++, тогда нет, у вас не будет этой проблемы. Ключевое слово 'inline' не имеет ничего общего с порядком объявлений переменных. – kbolino

+0

Я имею в виду, что я все еще использую .c как суффикс. Но вы просто сказали, что у C99 нет этой проблемы, поэтому я задаюсь вопросом, имеет ли более высокий уровень компилятора, например, visual studio 2010, либо. Для встроенных я имею в виду, могу ли я используйте inline в .c файле. – shirley

Смежные вопросы