#visual-c
#visual-c
Вопрос:
Как следует из названия, различает ли Visual Studio эти два файла по их суффиксу?.c или .cpp? У меня также есть еще один вопрос.Сначала я изложил программу следующим образом:
int main(int argc, char **argv)
{
LARGE_INTEGER TimeStart;
LARGE_INTEGER TimeEnd;
QueryPerformanceCounter(amp;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 ling указывает на «статическую двойную частоту;»
но если я добавлю «QueryPerformanceCounter (amp;TimeStart);» после выделения данных, компилятор может добиться успеха.Может ли кто-нибудь сказать мне, почему это произошло, было ли это просто из-за моей небрежности или невежества …?
Ответ №1:
В C все переменные должны быть объявлены перед вызовом любых методов.
Visual Studio по умолчанию будет компилироваться .Файлы C как C. Вы можете переопределить это.
Ответ №2:
В C89 вы должны объявить все свои переменные в верхней части блока кода. Вы также можете инициализировать их константами времени компиляции (литералы, макросы, которые расширяются до литералов, значения переменных, которые уже были инициализированы, и любые операции над ними, которые могут быть выполнены во время компиляции). Вы не можете чередовать другие типы операторов (например, вызовы функций) в этих объявлениях.
Это ограничение было снято в C99 (который не поддерживается Visual C ) и C .
Комментарии:
1. если я использую среду Visual studio 2010 c , эта проблема все еще должна существовать? могу ли я использовать «встроенный» в настройках, которые я указал выше? СПАСИБО
2. Я не уверен, что вы имеете в виду. Если вы переименуете файл в
.cpp
или вручную перенастроите компилятор для обработки исходного кода как C , то нет, у вас не будет этой проблемы.inline
Ключевое слово не имеет ничего общего с порядком объявления переменных.3. я имею в виду, что я все еще использую .c в качестве суффикса. Но вы только что сказали, что у C99 нет этой проблемы, поэтому мне интересно, есть ли эта проблема у компилятора более высокого уровня, такого как Visual studio 2010. Для inline я имею в виду, могу ли я использовать inline в файле .c.
4. VS 2010 по-прежнему не поддерживает C99. Вы можете указать VS для компиляции. C как код C , но это может иметь другие нежелательные побочные эффекты.