как визуальная студия рассказывает с ++ и с? - PullRequest
0 голосов
/ 04 октября 2011

Как видно из названия, визуальная студия различает эти два файла по суффиксу? .C или .cpp?У меня также есть еще один вопрос. Сначала я сформулировал программу следующим образом:

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 точки привязки к «static double Freq;"но если я поставлю "QueryPerformanceCounter (& TimeStart);"после выделения данных компилятор может преуспеть. Может кто-нибудь сказать мне, почему это произошло, просто из-за моей неосторожности пропуска чего-либо или невежества ...?

Ответы [ 2 ]

1 голос
/ 04 октября 2011

В C все переменные должны быть объявлены перед вызовом любых методов.

Visual Studio по умолчанию компилирует файлы .C как C. Вы можете переопределить это.

0 голосов
/ 04 октября 2011

В C89 вы должны объявить все свои переменные в верхней части блока кода. Вы также можете инициализировать их константами времени компиляции (литералы, макросы, которые расширяются до литералов, значения переменных, которые уже были инициализированы, и любые операции над этим, которые могут быть выполнены во время компиляции). Вы не можете перемежать другие типы операторов (например, вызовы функций) в этих объявлениях.

Это ограничение было снято в C99 (который не поддерживается в Visual C ++) и C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...