Visual Studio 2010 выдает мне синтаксические ошибки при попытке отладки, но синтаксических ошибок нет! - PullRequest
1 голос
/ 17 июня 2011

Я использую Visual Studio 2010, и я пытаюсь запустить простую программу, написанную на C, но я получаю тонны синтаксических ошибок при F5. Почти все они из-за этого:

syntax error: missing ';' before 'type'.

Вот как выглядит моя основная функция:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("Enter base 10 num: ");
    int value; scanf("%d", &value);
    printf("Enter base floor (min 2): ");
    int min; scanf("%d", &min);
    printf("Enter base ceiling (max 10): ");
    int max; scanf("%d", &max);
    base_convert(value, min, max);
    return 0;
}

Первое значение int, которое вы видите, это строка 12, а первая ошибка VS2010 сообщается в строке 12, char 1, которая является местоположением этого int. После сообщения о том, что я пропустил ";" (что я, очевидно, не), затем он говорит мне, что значение не объявлено.

Как мне это исправить? Я знаю, что моя программа на самом деле не имеет синтаксических (или каких-либо) ошибок - это было ранее написано и протестировано для работы в Ubuntu с компилятором GCC.

Может кто-нибудь помочь? Это очень расстраивает: S

Ответы [ 2 ]

5 голосов
/ 17 июня 2011

ANSI C не позволяет определять переменные в середине блока - они должны быть определены в верхней части блока.Более поздний стандарт C99 снимает это ограничение (как в C ++), но Visual Studio не поддерживает C99.

Перепишите вашу функцию с объявлениями переменных вверху:

int main()
{
    int value, min, max;
    printf("Enter base 10 num: ");
    scanf("%d", &value);
    printf("Enter base floor (min 2): ");
    scanf("%d", &min);
    printf("Enter base ceiling (max 10): ");
    scanf("%d", &max);
    base_convert(value, min, max);
    return 0;
}

GCC, так какрасширение, позволяющее по умолчанию определять переменные в середине блока.Если вы укажете параметр командной строки -pedantic (без -std=c99), вы получите следующее предупреждение:

warning: ISO C90 forbids mixed declarations and code
0 голосов
/ 17 июня 2011

Вы пытались перезапустить новый проект, чтобы убедиться, что ваш проект не поврежден.

...