Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
ASCII
90 / 63 / 10
Регистрация: 15.12.2013
Сообщений: 407
Завершенные тесты: 2
#1

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

05.04.2014, 19:14. Просмотров 2241. Ответов 14
Метки нет (Все метки)

Впервые с таким столкнулся:


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;
}
он пока пустой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2014, 19:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Error C2059: синтаксическая ошибка: if (C++):

Error C2059: синтаксическая ошибка: [ - C++
Не понимаю, почему выдает такую ошибку... Подскажите, что не так, если не сложно, заранее спасибо! void vipusk_krakena(int* Massiv,...

Error C2059: синтаксическая ошибка: else - C++
У меня проблема в этом коде , подскажите пожалуйста что нужно исправлять вот сам код #include &lt;iostream&gt; #include &lt;cmath&gt; ...

Error C2059: Синтаксическая ошибка: тип - C++
Вот отрывок кода, указывает, что ошибка на 5ой и 16ой строке, то есть функция min и max. ошибка: 1&gt;c:\users\андрей\documents\visual...

Синтаксическая ошибка: Ошибка 1 error C2059 - C++
#include &lt;iostream&gt; using namespace std; class Cat { public:

Error C2760: синтаксическая ошибка / Fatal error C1004: непредвиденное обнаружение конца файла - C++
Набыдлокодил следующее: Graph.h template&lt;class D&gt; class Graph { private: class Edge { private: int v1, v2;

Компилятор выдаёт ошибку error C2059: syntax error : '}' - C++
Компилятор visual studio 2010 выдаёт ошибку error C2059: syntax error : '}' в строке 91. Самая последняя строка #include &lt;iostream&gt; ...

14
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:30 #2
Этот if должен быть в функции какой-нибудь или, например, классе.
1
ASCII
90 / 63 / 10
Регистрация: 15.12.2013
Сообщений: 407
Завершенные тесты: 2
05.04.2014, 19:32  [ТС] #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;
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:33 #4
ASCII, и что это будет? Куда этот if будет относиться? К примеру если написать
C++
1
2
3
4
5
6
7
8
int a = 5;
if (a==5)
    a=6;
 
int main()
{
 
}
это ведь не будет работать
0
ASCII
90 / 63 / 10
Регистрация: 15.12.2013
Сообщений: 407
Завершенные тесты: 2
05.04.2014, 19:34  [ТС] #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");
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:36 #6
ASCII, попробуй errors в .h файле объявить как extern int errors, а в .c файле напиши int errors = ...
0
ASCII
90 / 63 / 10
Регистрация: 15.12.2013
Сообщений: 407
Завершенные тесты: 2
05.04.2014, 19:40  [ТС] #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: инициализатор не является константой
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:41 #8
ASCII, покажи теперь код

Добавлено через 33 секунды
нет, ты не понял. сделай не int errors = 0, а сразу int errors = open...
0
ASCII
90 / 63 / 10
Регистрация: 15.12.2013
Сообщений: 407
Завершенные тесты: 2
05.04.2014, 19:45  [ТС] #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: инициализатор не является константой
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:46 #10
В заголовочном файле .h идет объявление переменной extern int errors; Это значит, что она будет определена как int errors = ... или int errors; где-то в .c файле.
Ты же когда сделал int errors = 0 - определил переменную и присвоил ей значение 0. Но потом ты написал такое errors = open(...). Это уже не определение, ни инициализация. Просто код от балды в .h файле писать нельзя, потому что компилятор не будет знать, куда его запихнуть. Поэтому, он должен быть либо внутри класса, функции и т.д. А вне классов и функций такое: int x; компилятор пропускает потому, что это определение глобальной переменной (а не кусок кода от балды). Кажется, так.
0
ASCII
90 / 63 / 10
Регистрация: 15.12.2013
Сообщений: 407
Завершенные тесты: 2
05.04.2014, 19:49  [ТС] #11
extern`ом в данном случае я да, объявяю, а в .c файле int errors = open(...); почему же это не является определением? Точно такое же определение с присвоением...

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

Добавлено через 28 секунд
Ему нужен константный инициализатор, т.е. типо errors = 4
1
ASCII
90 / 63 / 10
Регистрация: 15.12.2013
Сообщений: 407
Завершенные тесты: 2
05.04.2014, 19:56  [ТС] #13
то есть мне нужно тему пересоздать в другом паблике?
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
05.04.2014, 19:57 #14
ASCII, лучше, чтобы модераторы перенесли тему, иначе - кросспостинг (который карается )
0
ASCII
90 / 63 / 10
Регистрация: 15.12.2013
Сообщений: 407
Завершенные тесты: 2
05.04.2014, 20:07  [ТС] #15
блин, я уже перенес тему...
модераторы, закройте пожалуйста эту тему.
0
05.04.2014, 20:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2014, 20:07
Привет! Вот еще темы с ответами:

error C2061: синтаксическая ошибка: идентификатор - C++
Вот такая ошибка: error C2061: синтаксическая ошибка: идентификатор using namespace std;...

Error C2059: syntax error : 'constant' - C++
Подскажите пожалуйста почему выдает ошибку error C2059: syntax error : 'constant' в этой строке : const int OK=0, EOS=0, ERROR=0; ...

Error C2059 - C++
Я второй день занимаюсь по курсам, вот решил попрактиковаться набрать программу формул умножения и такая ошибка, (C2059) работаю в visual...

Error C2589 и error C2059 - C++
Не могу никак исправить ошибку в последней сточке #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;random&gt;...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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