Синтаксическая ошибка отсутствие перед using namespace

Oleg Pridarun

2 / 2 / 1

Регистрация: 16.06.2016

Сообщений: 91

1

02.07.2017, 13:05. Показов 7203. Ответов 12

Метки using namespace, visual studio, с, Синтаксис (Все метки)


Студворк — интернет-сервис помощи студентам

У меня есть заголовочный файл LanguageEng.h В нём находится код:

C++
1
2
3
4
5
6
#pragma once
#include <iostream>
 
using namespace std;
 
string StartGameTextEng = "To start the game, enter <<Start>>/nTo open the settings, enter <<Settings>>/nTo exit, enter <<Exit>>";

При компиляции программы с этим заголовочным файлом происходит ошибка: c:users***onedriveпрограммыgamelanguageeng.h(4): error C2143: синтаксическая ошибка: отсутствие «;» перед «using namespace»
Я пробовал поставить поставить после #include <iostream> ;, но ошибка осталась.
В чём проблема?



0



1642 / 1091 / 487

Регистрация: 17.07.2012

Сообщений: 5,345

02.07.2017, 13:53

2

Код программы в студию.



0



223 / 213 / 80

Регистрация: 26.04.2013

Сообщений: 972

02.07.2017, 14:08

3

Попробуйте добавить #include <string>



0



2 / 2 / 1

Регистрация: 16.06.2016

Сообщений: 91

02.07.2017, 14:14

 [ТС]

4

Цитата
Сообщение от Новичок
Посмотреть сообщение

Код программы в студию.

Давайте я лучше весь проект кину, так как он многофайловый

Добавлено через 5 минут

Цитата
Сообщение от mat_for_c
Посмотреть сообщение

Попробуйте добавить #include <string>

Проблема осталась та же. Ни каких изменений



0



3434 / 2813 / 1249

Регистрация: 29.01.2016

Сообщений: 9,426

02.07.2017, 16:40

5

Цитата
Сообщение от Oleg Pridarun
Посмотреть сообщение

Давайте я лучше весь проект кину

И где же он?



0



2 / 2 / 1

Регистрация: 16.06.2016

Сообщений: 91

02.07.2017, 17:21

 [ТС]

6

Цитата
Сообщение от nd2
Посмотреть сообщение

И где же он?

Хотел поместить его на гугл диск, но это, похоже заняло бы несколько часов (не знаю по какой причине). Скинуть код из файла с int main()?



0



3434 / 2813 / 1249

Регистрация: 29.01.2016

Сообщений: 9,426

02.07.2017, 17:24

7

Цитата
Сообщение от Oleg Pridarun
Посмотреть сообщение

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

Здесь, в архиве, выложи. Или очень большой?

Добавлено через 59 секунд

Цитата
Сообщение от Oleg Pridarun
Посмотреть сообщение

Скинуть код из файла с int main()?

Хедеры, с определениями классов, есть в проекте?



0



2 / 2 / 1

Регистрация: 16.06.2016

Сообщений: 91

02.07.2017, 20:42

 [ТС]

8

Цитата
Сообщение от nd2
Посмотреть сообщение

Здесь, в архиве, выложи. Или очень большой?

Добавлено через 59 секунд

Хедеры, с определениями классов, есть в проекте?

Классы не использовал. Я в них пока не разобрался. На данный момент только функции и переменные в хедерах



0



3434 / 2813 / 1249

Регистрация: 29.01.2016

Сообщений: 9,426

02.07.2017, 20:56

9

Выкладывать проект будешь, или можно отписываться от темы?



0



5230 / 3202 / 362

Регистрация: 12.12.2009

Сообщений: 8,112

Записей в блоге: 2

03.07.2017, 15:11

10

нужно смотреть на файл, который инклюдит LanguageEng.h



0



с++

1282 / 523 / 225

Регистрация: 15.07.2015

Сообщений: 2,562

03.07.2017, 15:18

11

так в этом файле и исправляй ошибку по пути
c:users***onedriveпрограммыgamelanguageeng.h

так как LanguageEng.h и такой languageeng.h это разные файлы или нет?



0



2 / 2 / 1

Регистрация: 16.06.2016

Сообщений: 91

05.07.2017, 22:50

 [ТС]

12

Простите, мне отключили интернет. Проблему решил. languageeng и LanguageEng для Visual у меня одно и тоже. Проблема была в другом хедере. В нём была пропущена ;, и другие хедеры на это реагировали



0



dawn artist

Заблокирован

05.07.2017, 23:01

13

Лучший ответ Сообщение было отмечено Oleg Pridarun как решение

Решение

Цитата
Сообщение от Oleg Pridarun
Посмотреть сообщение

Проблема была в другом хедере.

Это было сразу очевидно.



1



I am VERY new to C++ and Open GL and I have been trying to display 3D objects in a scene. it worked fine with one but when I tried to alter my code to add a second, my code regarding the HUD text showing the camera location started giving errors. The error above is shown and it is apparently in the sstream file (#include). I have tried searching around and asking for help but there is nothing that helps/that I understand. When I comment-out the #include line and the code that uses it, I get a similar saying «error C2143: syntax error : missing ‘;’ before ‘using'» in my main.cpp file.

I am running Visual Studio 2010 and I have even tried turning the whole thing off and on again, and copying the code over to a new project. Help would be greatly appreciated.

#include <Windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include "glut.h"
#include "SceneObject.h"
#include <fstream>
#include <sstream>
#include <iostream>
#include <string>
//#include <cmath>
//#include <limits>
//#include <cstdlib>

using namespace std;

stringstream ss;
ss << "Camera (" << cam.pos.x << ", " << cam.pos.y << ", " << cam.pos.z << ")";
glClear(GL_DEPTH_BUFFER_BIT);
outputText(-1.0, 0.5, ss.str());

#ifndef SCENEOBJECT_H
#define SCENEOBJECT_H
#include <string>
#include <iostream>
#include <fstream>

using namespace std;

struct point3D {
    float x;
    float y;
    float z;
};

struct colour{
    float r;
    float g;
    float b;
};

struct tri {
    int a;
    int b;
    int c;
};

class SceneObject {
private:
    int NUM_VERTS;
    int NUM_COL;
    int NUM_TRI;
    point3D  * vertices;
    colour * colours;
    tri  * indices;
    void drawTriangle(int a, int b, int c);
public:
    SceneObject(const string fName) {
        read_file(fName);
    }
    void drawShape()
    {
        // DO SOMETHING HERE
    }
    int read_file (const string fileName)
    {
    ifstream inFile;
    inFile.open(fileName);

    if (!inFile.good())
    {
        cerr  << "Can't open file" << endl;
        NUM_TRI = 0;
        return 1;
    }

    //inFile >> shapeID;

    inFile >> NUM_VERTS;
    vertices = new point3D[NUM_VERTS];

    for (int i=0; i < NUM_VERTS; i++)
    {   
        inFile >> vertices[i].x;
        inFile >> vertices[i].y;
        inFile >> vertices[i].z;
    }

    inFile >> NUM_COL;
    //inFile >> randomCol;
    colours = new colour[NUM_COL];
    /*if (randomCol == 'y')
    {
        for (int i=0; i < NUM_COL; i++)
        {
            colours[i].r = ((float) rand() / (RAND_MAX+1));
            colours[i].g = ((float) rand() / (RAND_MAX+1));
            colours[i].b = ((float) rand() / (RAND_MAX+1));
        }
    }
    else if (randomCol == 'n')
    {*/
        for (int i=0; i < NUM_COL; i++)
        {   
            inFile >> colours[i].r;
            inFile >> colours[i].g;
            inFile >> colours[i].b;
        }
    //}

    inFile >> NUM_TRI;
    indices = new tri[NUM_TRI];

    for (int i=0; i < NUM_TRI; i++)
    {   
        inFile >> indices[i].a;
        inFile >> indices[i].b;
        inFile >> indices[i].c;
    }

    inFile.close();
    return 0;
}
}
#endif

I haven’t changed the code and as far as I am aware, there are semi-colons where there are meant to be. Even my friend who has been programming for 5 years couldn’t solve this. I will include any other specific code if needed. And when I said new to C++ and OpenGL I really much VERY new.
This is even my first post. I’ll get there eventually.

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    Компилятор не в себе
    , глючит.. выдаёт ошибку там, где её быть не должно

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    15.01.10, 13:44

      после попытки компиляции программы в MVisual C++ 2008 Express пишет следующие тупые ошибки:

      Ошибка 1 error C2143: синтаксическая ошибка: отсутствие «;» перед «using»
      что-то я не помню, чтобы перед using namespace std; писался ;

      Ошибка 2 error C2628: недопустимый ‘Temperature’ с последующим ‘void’ (возможно, отсутствует ‘;’)
      Ошибка 3 error C2556: Temperature Temperature::set(std::string): перегруженная функция отличается от ‘void Temperature::set(std::string)’ только возвращаемым типом
      Ошибка 3 error C2371: Temperature::set: переопределение; различные базовые типы
      тут я тоже не пойму в чём у меня могла быть ошибка. вот код:

      ExpandedWrap disabled

         //gradus.h

        #pragma once

        #include <iostream>

        #include <string>

        using namespace std;

        class Temperature

        {

        private:

            int grad;

            char sys;

        public:

            Temperature(int gr = 0 , char shkala = ‘C’) : grad(gr) , sys(shkala) {};

            void set( int gr , char shkala)                                      {grad = gr; sys = shkala;};

            void set( string str);

            int change();

            void show();

        }

      ExpandedWrap disabled

        //gradus.cpp

        #include «gradus.h»

        void Temperature::set(string str)

        {…}

        int Temperature::change()

        {…}

        void Temperature::show()

        {…}


      kanes



      Сообщ.
      #2

      ,
      15.01.10, 13:45

        При определении класса после } ставят ;


        Potroshitell



        Сообщ.
        #3

        ,
        15.01.10, 13:46

          аа.. сори, не компилятор глючит, а я! вопрос в топку :lol:

          Сообщение отредактировано: Potroshitell — 15.01.10, 13:46


          kanes



          Сообщ.
          #4

          ,
          15.01.10, 13:48

            Цитата Potroshitell @ 15.01.10, 13:45

            ааа, или возможно просто set — ключевое слово.

            не ключевое, но слово обозначающее контейнер из STL std::set, правда для него требуется заголовок <set> так что дело не в этом


            Potroshitell



            Сообщ.
            #5

            ,
            15.01.10, 14:07

              я ещё вот хотел бы задать 1 мини-вопросик.. ради него наверно не стоит создавать отдельную тему=)

              ExpandedWrap disabled

                class Temperature

                {

                public:

                    Temperature(int gr = 0 , char shkala = ‘C’) : grad(gr) , sys(shkala) {};

                    void set( int gr , char shkala)                                      {grad = gr; sys = shkala;}  /* вот тут. если функция определяется в классе как

                встроенная, то нужно ставить ; после } ? а то компилятор вроде не ругается в обоих случаях. */

                    …

              Сообщение отредактировано: Potroshitell — 15.01.10, 14:08


              zim22



              Сообщ.
              #6

              ,
              15.01.10, 14:31

                Junior

                *

                Рейтинг (т): 3

                Цитата Potroshitell @ 15.01.10, 14:07

                если функция определяется в классе как встроенная, то нужно ставить ; после } ?

                не нужно.


                Potroshitell



                Сообщ.
                #7

                ,
                15.01.10, 14:32


                  Mr.Delphist



                  Сообщ.
                  #8

                  ,
                  17.01.10, 14:44

                    И это… того… Не пиши «using namespace» в заголовочных файлах, а то это очень «добрый» сюрприз себе на будущее :)
                    Ибо этот юзинг прилетит во все те файлы, куда ты будешь включать свой gradus.h (или любой заголовочник, явно/неявно включающий gradus.h). Очень «весело» ловить ошибки в стиле «код перестал компилиться после добавки одного #include, а ведь больше ничего не менял» или «компилятор не видит метод моего класса»

                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                    0 пользователей:

                    • Предыдущая тема
                    • C/C++: Общие вопросы
                    • Следующая тема

                    Рейтинг@Mail.ru

                    [ Script execution time: 0,0243 ]   [ 16 queries used ]   [ Generated: 27.06.23, 22:08 GMT ]  

                    So I am working on a program that is due tomorrow and for some reason I keep getting this 2 errors, if I click on the first one it takes me to the iostream file and right before the _STD_BEGIN it wants me to put «;» but if I do that it messes up the file in the library so I am pretty sure I do not have to do that, the second error is in my main.cpp and it points to using namespace std; and it wants me to put a «;» before it =, if I do so the error disappears and it keeps pointing at the iostream error….
                    I have no idea what to do and my deadline is tomorrow.
                    This is my main.cpp include section with the modification to using namespace std

                    #include "stdafx.h"
                    #include <iostream>
                    #include <iomanip>
                    #include <cstdlib>
                    #include <stdio.h>
                    #include "Package.h"
                    ;using namespace std;
                    

                    asked Dec 19, 2013 at 15:12

                    Cosmin S's user avatar

                    4

                    Look for a class or struct definition in Package.h that’s missing its semicolon. ie.

                    class act
                    {
                        // yadda
                    }  // no semicolon here
                    

                    Then add the missing semicolon.

                    answered Dec 19, 2013 at 15:15

                    Joe Z's user avatar

                    Joe ZJoe Z

                    17.4k3 gold badges28 silver badges39 bronze badges

                    When you get a «missing ;type error on a line that follows closeley behind a bunch of#includestatements, the likely culprit is a missing;` in one of the header files. To find out which, start at the last include file, Package.h. You’ll surely find a missing semicolon there. It’s probably missing after a class declaration, as if you had written:

                    class Foo
                    {
                    }
                    

                    instead of

                    class Foo
                    {
                    };
                    

                    answered Dec 19, 2013 at 15:16

                    John Dibling's user avatar

                    John DiblingJohn Dibling

                    99.4k30 gold badges184 silver badges324 bronze badges

                    Я ОЧЕНЬ новичок в С++ и Open GL, и я пытаюсь отображать 3D-объекты в сцене. он работал нормально с одним, но когда я попытался изменить свой код, чтобы добавить второй, мой код относительно текста HUD, показывающего местоположение камеры, начал давать ошибки. Вышеприведенная ошибка показана и, по-видимому, находится в файле sstream (#include). Я пробовал искать и просить о помощи, но я ничего не понимаю. Когда я комментирую строку #include и код, который ее использует, я получаю аналогичное высказывание «ошибка C2143: синтаксическая ошибка: отсутствует»; перед «использованием» в моем файле main.cpp.

                    Я запускаю Visual Studio 2010, и я даже попытался отключить все это и снова, и скопировать код на новый проект. Помощь будет принята с благодарностью.

                    #include <Windows.h>
                    #include <GL/gl.h>
                    #include <GL/glu.h>
                    #include "glut.h"
                    #include "SceneObject.h"
                    #include <fstream>
                    #include <sstream>
                    #include <iostream>
                    #include <string>
                    //#include <cmath>
                    //#include <limits>
                    //#include <cstdlib>
                    
                    using namespace std;
                    

                    stringstream ss;
                    ss << "Camera (" << cam.pos.x << ", " << cam.pos.y << ", " << cam.pos.z << ")";
                    glClear(GL_DEPTH_BUFFER_BIT);
                    outputText(-1.0, 0.5, ss.str());
                    

                    #ifndef SCENEOBJECT_H
                    #define SCENEOBJECT_H
                    #include <string>
                    #include <iostream>
                    #include <fstream>
                    
                    using namespace std;
                    
                    struct point3D {
                        float x;
                        float y;
                        float z;
                    };
                    
                    struct colour{
                        float r;
                        float g;
                        float b;
                    };
                    
                    struct tri {
                        int a;
                        int b;
                        int c;
                    };
                    
                    class SceneObject {
                    private:
                        int NUM_VERTS;
                        int NUM_COL;
                        int NUM_TRI;
                        point3D  * vertices;
                        colour * colours;
                        tri  * indices;
                        void drawTriangle(int a, int b, int c);
                    public:
                        SceneObject(const string fName) {
                            read_file(fName);
                        }
                        void drawShape()
                        {
                            // DO SOMETHING HERE
                        }
                        int read_file (const string fileName)
                        {
                        ifstream inFile;
                        inFile.open(fileName);
                    
                        if (!inFile.good())
                        {
                            cerr  << "Can't open file" << endl;
                            NUM_TRI = 0;
                            return 1;
                        }
                    
                        //inFile >> shapeID;
                    
                        inFile >> NUM_VERTS;
                        vertices = new point3D[NUM_VERTS];
                    
                        for (int i=0; i < NUM_VERTS; i++)
                        {   
                            inFile >> vertices[i].x;
                            inFile >> vertices[i].y;
                            inFile >> vertices[i].z;
                        }
                    
                        inFile >> NUM_COL;
                        //inFile >> randomCol;
                        colours = new colour[NUM_COL];
                        /*if (randomCol == 'y')
                        {
                            for (int i=0; i < NUM_COL; i++)
                            {
                                colours[i].r = ((float) rand() / (RAND_MAX+1));
                                colours[i].g = ((float) rand() / (RAND_MAX+1));
                                colours[i].b = ((float) rand() / (RAND_MAX+1));
                            }
                        }
                        else if (randomCol == 'n')
                        {*/
                            for (int i=0; i < NUM_COL; i++)
                            {   
                                inFile >> colours[i].r;
                                inFile >> colours[i].g;
                                inFile >> colours[i].b;
                            }
                        //}
                    
                        inFile >> NUM_TRI;
                        indices = new tri[NUM_TRI];
                    
                        for (int i=0; i < NUM_TRI; i++)
                        {   
                            inFile >> indices[i].a;
                            inFile >> indices[i].b;
                            inFile >> indices[i].c;
                        }
                    
                        inFile.close();
                        return 0;
                    }
                    }
                    #endif
                    

                    Я не изменил код и, насколько мне известно, есть полуколоны, где они должны быть. Даже мой друг, который программировал в течение 5 лет, не смог это решить. При необходимости я буду включать любой другой конкретный код. И когда я сказал новый для С++ и OpenGL, я действительно много ОЧЕНЬ новый.
                    Это даже мой первый пост. Я доберусь туда в конце концов.

                  • Синтаксическая ошибка при установке приложения на андроид как исправить самсунг
                  • Синтаксическая ошибка при установке приложения на андроид как исправить леново
                  • Синтаксическая ошибка при установке приложения на андроид как исправить ксиоми
                  • Синтаксическая ошибка при установке приложения на андроид как исправить асус
                  • Синтаксическая ошибка при установке приложения на android