Форум программистов, компьютерный форум CyberForum.ru

Visual C++

Войти
Регистрация
Восстановить пароль
 
wmaster575
26 / 26 / 12
Регистрация: 02.02.2015
Сообщений: 108
#1

Глюк компилятора или в чём может быть ошибка? - Visual C++

09.01.2017, 22:06. Просмотров 220. Ответов 2
Метки нет (Все метки)

Скачал исходники obs studio, создал решение под ms vs 2013 с помощью cmake.
Пытаюсь собрать, но выдает ошибки на банальных местах, причём я не могу понять в чём дело.
Вот кусок кода, функция:
C++
1
2
3
4
5
6
7
8
9
10
11
int64_t os_get_file_size(const char *path)
{
    FILE* f = os_fopen(path, "rb");
    if (!f)
        return -1;
 
    int64_t sz = os_fgetsize(f);
    fclose(f);
 
    return sz;
}
При сборке выдает:
error C2275: int64_t: недопустимое использование этого типа в качестве выражения D:\cpp\obs\obs-studio\libobs\util\platform.c
error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "sz" D:\cpp\obs\obs-studio\libobs\util\platform.c
error C2065: sz: необъявленный идентификатор D:\cpp\obs\obs-studio\libobs\util\platform.c
error C2065: sz: необъявленный идентификатор D:\cpp\obs\obs-studio\libobs\util\platform.c

Если закомментировать оператор if, то есть сделать вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
int64_t os_get_file_size(const char *path)
{
    FILE* f = os_fopen(path, "rb");
//  if (!f)
//      return -1;
 
    int64_t sz = os_fgetsize(f);
    fclose(f);
 
    return sz;
}
То ошибку уже и не выдает. Из-за чего так?

Ещё в пару местах такая же ошибка.

Добавлено через 28 минут
Прикол, если if оградить фигурными скобками, то компилируется без ошибок.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int64_t os_get_file_size(const char *path)
{
    FILE* f = os_fopen(path, "rb");
    if (!f)
    {
        return -1;
    }   
 
    int64_t sz = os_fgetsize(f);
    fclose(f);
 
    return sz;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2017, 22:06     Глюк компилятора или в чём может быть ошибка?
Посмотрите здесь:

Что может быть не так? Visual C++
При запуске программы ошибка компилятора Visual Studio 2008 Visual C++
в чём ошибка? Visual C++
В чём писать, в MFC или CLR? Visual C++
Visual C++ Консольное приложение и модули. В чём ошибка?
Visual C++ Ошибка компилятора fatal error C1091: ограничение компилятора: длина строки превышает 65535 байт
Visual C++ Ошибка компилятора как исправить
Visual C++ Ошибка компилятора. Что сделать, что бы среда работала?
Visual C++ Ошибка компилятора?
Ошибки компилятора Visual C++
Visual C++ В чём ошибка?
Visual C++ Sip всегда выводит начальную позицию 6436, в чем может быть ошибка?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nd2
1501 / 1240 / 418
Регистрация: 29.01.2016
Сообщений: 3,820
10.01.2017, 01:46     Глюк компилятора или в чём может быть ошибка? #2
Скорее всего, причина в том, что у тебя Си-компилятор работает. Расширение файла .c, и если, в свойствах проекта, стоит: "Компилировать как: по умолчанию", то будет вызываться компилятор Си.
wmaster575
26 / 26 / 12
Регистрация: 02.02.2015
Сообщений: 108
10.01.2017, 11:41  [ТС]     Глюк компилятора или в чём может быть ошибка? #3
nd2, в параметре "Компилировать как" прописано "Компилировать как код C (/TC)", если я поменяю на C++, то компилятор начнет выдавать другие ошибки. Этот код должен собраться на си.

Добавлено через 3 часа 30 минут
nd2, я поставил 5 обновление VS 2013 и всё скомпилировалось, это ошибка компилятора была.
Yandex
Объявления
10.01.2017, 11:41     Глюк компилятора или в чём может быть ошибка?
Ответ Создать тему
Опции темы

Текущее время: 14:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru