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

Error C2059: синтаксическая ошибка: if - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
ASCII
 Аватар для ASCII
82 / 54 / 8
Регистрация: 15.12.2013
Сообщений: 370
Завершенные тесты: 2
05.04.2014, 19:14     Error C2059: синтаксическая ошибка: if #1
Впервые с таким столкнулся:


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// proc_db.h
 
#ifndef PROC_DB
#define PROC_DB
 
#include <stdio.h>
 
 
FILE *fp;
 
 
 
 
#endif
C
1
2
3
4
5
6
7
8
// proc_db.c
#include "proc_db.h"
 
if( (fp = fopen("db.dat", "a+")) == NULL ) {
    printf("Во время открытия файла возникли ошибки, файл не удалось открыть\n");
    system("pause >> void");
    exit(1);
}
говорит что ошибка if:
1>c:\users\андрей\documents\visual studio 2010\projects\project_database_lab\project_database_lab\proc_db.c(4): error C2059: синтаксическая ошибка: if

В чем дело?

Добавлено через 2 минуты
вот основной файл:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// procedure.c
#include <stdlib.h>
#include <stdio.h>
 
int main() {
 
 
 
 
 
 
 
 
 
    system("pause >> void");
    return 0;
}
он пока пустой
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2014, 19:14     Error C2059: синтаксическая ошибка: if
Посмотрите здесь:

C++ error C2061: синтаксическая ошибка: идентификатор
C++ error C2059: syntax error : 'constant'
Error C2059 C++
C++ Вылетает ошибка error C2061: синтаксическая ошибка: идентификатор "_TCHAR"
C++ Error C2059: Синтаксическая ошибка: тип
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:30     Error C2059: синтаксическая ошибка: if #2
Этот if должен быть в функции какой-нибудь или, например, классе.
ASCII
 Аватар для ASCII
82 / 54 / 8
Регистрация: 15.12.2013
Сообщений: 370
Завершенные тесты: 2
05.04.2014, 19:32  [ТС]     Error C2059: синтаксическая ошибка: if #3
а почему нельзя глобально его писать?

Добавлено через 1 минуту
Так тоже не получается, ругается на errors

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// proc_db.h
#ifndef PROC_DB
#define PROC_DB
 
FILE *fp;
int errors;
 
/*
 
0 - нет ошибок
1 - не удалось открыть файл
2 - 
 
 
*/
 
 
 
#endif
C
1
2
3
4
5
6
// proc_db.c
#include <stdio.h>
#include <stdlib.h>
#include "proc_db.h"
 
errors = ((fp = fopen("db.dat", "a+")) == NULL) ? 1 : 0;
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:33     Error C2059: синтаксическая ошибка: if #4
ASCII, и что это будет? Куда этот if будет относиться? К примеру если написать
C++
1
2
3
4
5
6
7
8
int a = 5;
if (a==5)
    a=6;
 
int main()
{
 
}
это ведь не будет работать
ASCII
 Аватар для ASCII
82 / 54 / 8
Регистрация: 15.12.2013
Сообщений: 370
Завершенные тесты: 2
05.04.2014, 19:34  [ТС]     Error C2059: синтаксическая ошибка: if #5
и так не получается


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef PROC_DB
#define PROC_DB
 
FILE *fp;
int errors;
 
int open(const char *filename);
 
/*
 
0 - нет ошибок
1 - не удалось открыть файл
2 - 
 
 
*/
 
 
 
#endif


C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
#include "proc_db.h"
 
int open(const char *filename) {
 
    return ((fp = fopen(filename, "a+")) == NULL) ? 1 : 0;
 
}
 
errors = open("db.dat");
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:36     Error C2059: синтаксическая ошибка: if #6
ASCII, попробуй errors в .h файле объявить как extern int errors, а в .c файле напиши int errors = ...
ASCII
 Аватар для ASCII
82 / 54 / 8
Регистрация: 15.12.2013
Сообщений: 370
Завершенные тесты: 2
05.04.2014, 19:40  [ТС]     Error C2059: синтаксическая ошибка: if #7
не получается так

Добавлено через 39 секунд
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef PROC_DB
#define PROC_DB
 
FILE *fp;
extern int errors;
 
int open(const char *filename);
 
/*
 
0 - нет ошибок
1 - не удалось открыть файл
2 - 
 
 
*/
 
 
 
#endif
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include "proc_db.h"
 
int errors = 0;
 
int open(const char *filename) {
 
    return ((fp = fopen(filename, "a+")) == NULL) ? 1 : 0;
 
}
 
errors = open("db.dat");
1>c:\users\андрей\documents\visual studio 2010\projects\project_database_lab\project_database_lab\proc_db.c(14): error C2374: errors: переопределение; множественная инициализация
1> c:\users\андрей\documents\visual studio 2010\projects\project_database_lab\project_database_lab\proc_db.h(5): см. объявление "errors"
1>c:\users\андрей\documents\visual studio 2010\projects\project_database_lab\project_database_lab\proc_db.c(14): error C2099: инициализатор не является константой
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:41     Error C2059: синтаксическая ошибка: if #8
ASCII, покажи теперь код

Добавлено через 33 секунды
нет, ты не понял. сделай не int errors = 0, а сразу int errors = open...
ASCII
 Аватар для ASCII
82 / 54 / 8
Регистрация: 15.12.2013
Сообщений: 370
Завершенные тесты: 2
05.04.2014, 19:45  [ТС]     Error C2059: синтаксическая ошибка: if #9
если сделать int errors = open... то:
1>c:\users\андрей\documents\visual studio 2010\projects\project_database_lab\project_database_lab\proc _db.c(14): error C2099: инициализатор не является константой

Добавлено через 15 секунд
пробовал уже так

Добавлено через 2 минуты
.h файл не изменял

C
1
2
3
4
5
6
7
8
9
10
11
12
13
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include "proc_db.h"
 
 
int open(const char *filename) {
 
    return ((fp = fopen(filename, "a+")) == NULL) ? 1 : 0;
 
}
 
int errors = open("db.dat");
При таком раскладе выдает ошибку: 1>c:\users\андрей\documents\visual studio 2010\projects\project_database_lab\project_database_lab\proc_db.c(13): error C2099: инициализатор не является константой
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:46     Error C2059: синтаксическая ошибка: if #10
В заголовочном файле .h идет объявление переменной extern int errors; Это значит, что она будет определена как int errors = ... или int errors; где-то в .c файле.
Ты же когда сделал int errors = 0 - определил переменную и присвоил ей значение 0. Но потом ты написал такое errors = open(...). Это уже не определение, ни инициализация. Просто код от балды в .h файле писать нельзя, потому что компилятор не будет знать, куда его запихнуть. Поэтому, он должен быть либо внутри класса, функции и т.д. А вне классов и функций такое: int x; компилятор пропускает потому, что это определение глобальной переменной (а не кусок кода от балды). Кажется, так.
ASCII
 Аватар для ASCII
82 / 54 / 8
Регистрация: 15.12.2013
Сообщений: 370
Завершенные тесты: 2
05.04.2014, 19:49  [ТС]     Error C2059: синтаксическая ошибка: if #11
extern`ом в данном случае я да, объявяю, а в .c файле int errors = open(...); почему же это не является определением? Точно такое же определение с присвоением...

Добавлено через 30 секунд
но все равно ведь не работает, я не понимаю, что ему нужно
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:52     Error C2059: синтаксическая ошибка: if #12
А, это же Си. Так тебе в раздел для Си. Такое в Си не будет работать

Добавлено через 28 секунд
Ему нужен константный инициализатор, т.е. типо errors = 4
ASCII
 Аватар для ASCII
82 / 54 / 8
Регистрация: 15.12.2013
Сообщений: 370
Завершенные тесты: 2
05.04.2014, 19:56  [ТС]     Error C2059: синтаксическая ошибка: if #13
то есть мне нужно тему пересоздать в другом паблике?
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:57     Error C2059: синтаксическая ошибка: if #14
ASCII, лучше, чтобы модераторы перенесли тему, иначе - кросспостинг (который карается )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2014, 20:07     Error C2059: синтаксическая ошибка: if
Еще ссылки по теме:

Синтаксическая ошибка: Ошибка 1 error C2059 C++
Error C2059: синтаксическая ошибка: else C++
C++ Error C2059: синтаксическая ошибка: [

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

Или воспользуйтесь поиском по форуму:
ASCII
 Аватар для ASCII
82 / 54 / 8
Регистрация: 15.12.2013
Сообщений: 370
Завершенные тесты: 2
05.04.2014, 20:07  [ТС]     Error C2059: синтаксическая ошибка: if #15
блин, я уже перенес тему...
модераторы, закройте пожалуйста эту тему.
Yandex
Объявления
05.04.2014, 20:07     Error C2059: синтаксическая ошибка: if
Ответ Создать тему
Опции темы

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