Ошибка ожидаемый неквалифицированный идентификатор перед токеном

For anyone with this situation: I saw this error when I accidentally used my_first_scope::my_second_scope::true in place of simply true, like this:

bool my_var = my_first_scope::my_second_scope::true;

instead of:

bool my_var = true;

This is because I had a macro which caused MY_MACRO(true) to expand into my_first_scope::my_second_scope::true, by mistake, and I was actually calling bool my_var = MY_MACRO(true);.

Here’s a quick demo of this type of scoping error:

Program (you can run it online here: https://onlinegdb.com/BkhFBoqUw):

#include <iostream>
#include <cstdio>

namespace my_first_scope 
{
namespace my_second_scope
{
} // namespace my_second_scope
} // namespace my_first_scope

int main()
{
    printf("Hello World\n");
    
    bool my_var = my_first_scope::my_second_scope::true;
    
    std::cout << my_var << std::endl;

    return 0;
}

Output (build error):

main.cpp: In function ‘int main()’:
main.cpp:27:52: error: expected unqualified-id before ‘true’
     bool my_var = my_first_scope::my_second_scope::true;
                                                    ^~~~

Notice the error: error: expected unqualified-id before ‘true’, and where the arrow under the error is pointing. Apparently the «unqualified-id» in my case is the double colon (::) scope operator I have just before true.

When I add in the macro and use it (run this new code here: https://onlinegdb.com/H1eevs58D):

#define MY_MACRO(input) my_first_scope::my_second_scope::input

...

bool my_var = MY_MACRO(true);

I get this new error instead:

main.cpp: In function ‘int main()’:
main.cpp:29:28: error: expected unqualified-id before ‘true’
     bool my_var = MY_MACRO(true);
                            ^
main.cpp:16:58: note: in definition of macro ‘MY_MACRO’
 #define MY_MACRO(input) my_first_scope::my_second_scope::input
                                                          ^~~~~

У меня проблемы с решением неизвестной проблемы, с которой я никогда не сталкивался на Arduino Nano (ATmega328). Я создаю исходный код дрона, и у него все хорошо. Но в Arduino IDE неожиданно появились ошибки.
Очевидно, я новичок в программировании. Так что помогите мне узнать, как решить эту проблему.

Я получил такие ошибки:

error: expected unqualified-id before '[' token

error: 'value' does not name a type

Quadcopter_Code_Arduino:580: error: expected unqualified-id
before '[' token

struct op[]

^

Quadcopter_Code_Arduino:589: error: 'value' does not name a type

} value;

^
typedef union accel_t_gyro_union
{
struct
{
uint8_t x_accel_h;
uint8_t x_accel_l;
uint8_t y_accel_h;
uint8_t y_accel_l;
uint8_t z_accel_h;
uint8_t z_accel_l;
uint8_t t_h;
uint8_t t_l;
uint8_t x_gyro_h;
uint8_t x_gyro_l;
uint8_t y_gyro_h;
uint8_t y_gyro_l;
uint8_t z_gyro_h;
uint8_t z_gyro_l;
} reg;
struct op[]
{
int x_accel;
int y_accel;
int z_accel;
int temperature;
int x_gyro;
int y_gyro;
int z_gyro;
} value;

};

1

Решение

Определение / Информация:

От http://en.cppreference.com/w/cpp/language/union

Объединение — это специальный тип класса, который может содержать только один из
Нестатические члены данных одновременно.

А также

Объединение настолько велико, насколько необходимо, чтобы вместить самого большого члена данных.
Другие члены данных размещаются в тех же байтах как часть этого
самый большой член.

Также:

Ваша декларация неверна и должна быть:

struct op
{
int x_accel;
int y_accel;
int z_accel;
int temperature;
int x_gyro;
int y_gyro;
int z_gyro;
} value [SIZE];

Я советую вам использовать конкретный размер для вашего массива, ИЛИ уменьшение указателя вашего типа структуры, чтобы прояснить, что вы решите, что это размер кучи позже, но объединение в стеке будет иметь размер указателя для члена. ..

(Хотя с пустыми скобками он все еще компилируется и работает в моем быстром тестировании … Я тоже должен разобраться в этом поведении.: D)

Решение:

Используйте исправленную декларацию выше.

Совет:
Используйте РАЗМЕР для массива в скобках.
Если вы еще не знаете размер, используйте указатель по причинам, указанным выше.

1

Другие решения

struct op[] {} ерунда в любом случае. Если ты хочешь struct тип по имени op, он должен быть за пределами объединения (но это не проблема, может быть проблема с его использованием где-то еще):

struct A {
uint8_t  low_byte; // depends on byte order
uint8_t high_byte;
};

struct B {
int          word;
};

union U {
A  reg;
B  val;
} variable;

Но нет необходимости в массиве вообще. Итак, второе struct должен быть также анонимным:

union accel_t_gyro_union
{
struct
{
uint8_t x_accel_h;
uint8_t x_accel_l;
uint8_t y_accel_h;
uint8_t y_accel_l;
uint8_t z_accel_h;
uint8_t z_accel_l;
uint8_t t_h;
uint8_t t_l;
uint8_t x_gyro_h;
uint8_t x_gyro_l;
uint8_t y_gyro_h;
uint8_t y_gyro_l;
uint8_t z_gyro_h;
uint8_t z_gyro_l;
} reg;
struct
{
int x_accel;
int y_accel;
int z_accel;
int temperature;
int x_gyro;
int y_gyro;
int z_gyro;
} value;
};

1

struct op[] {} выглядит странно для меня. (Я даже не знаю, как читать / интерпретировать это.)

Таким образом, я протестировал это с помощью gcc на cygwin (в упрощенной версии):

$ gcc --version
gcc (GCC) 5.4.0

$ echo 'typedef union u { struct op[] { int i; } value; };
> int main() { return 0; }
> ' > test-weird-union.c

$ gcc test-weird-union.c
test-weird-union.c:1:28: error: expected identifier or '(' before '[' token
typedef union u { struct op[] { int i; } value; };
^
test-weird-union.c:1:42: error: expected ';' before 'value'
typedef union u { struct op[] { int i; } value; };
^
test-weird-union.c:1:42: warning: useless storage class specifier in empty declaration

(Тот же вывод с gcc -std=c11.)

Код, вероятно, неправильный или, по крайней мере, не стандартный C.

ХОРОШО. Думая дополнительно об этом: как это исправить?

Немного больше фона было бы неплохо. Таким образом, рассмотрим это как подход и докажем, как его применять:

#include <stdint.h>

typedef union accel_t_gyro_union
{
struct
{
uint8_t x_accel_h;
uint8_t x_accel_l;
uint8_t y_accel_h;
uint8_t y_accel_l;
uint8_t z_accel_h;
uint8_t z_accel_l;
uint8_t t_h;
uint8_t t_l;
uint8_t x_gyro_h;
uint8_t x_gyro_l;
uint8_t y_gyro_h;
uint8_t y_gyro_l;
uint8_t z_gyro_h;
uint8_t z_gyro_l;
} reg;
struct op
{
int16_t x_accel;
int16_t y_accel;
int16_t z_accel;
int16_t temperature;
int16_t x_gyro;
int16_t y_gyro;
int16_t z_gyro;
} value;
} accel_t_gyro_union;

Следующие вещи, которые я сделал:

  1. Удалил [] позади op исправить синтаксическую ошибку.

  2. Изменил int в int16_t, Это гарантирует, что этот код работает и на не 16-битных платформах.

  3. добавленной accel_t_gyro_union до конца typedef, Это может не быть необходимым, но я чувствовал себя комфортно с этим.

Снова проверил с помощью gcc на cygwin:

$ gcc -std=c11 test-weird-union.c

По крайней мере, нет синтаксических ошибок. Остальное за пределами моих знаний.

1

Вчера написал программу, всё было хорошо, работала нормально. Сегодня решил кое-что в ней доделать, как выяснилось, что теперь там появилась ошибка, хотя код не редактировался с момента последнего «удачного» запуска.

Теперь выдаёт такую ошибку:

[Error] expected unqualified-id before ‘{‘ token (скобка после объявления мэйна).

#include <iostream>
#include <cmath>
#include <string.h>
#include <stdio.h>

using namespace std;

class publication
   {
       protected: char name[30];
                  float price;

       public :
           void getdata()
           {
               cout<<"Nazvanie knigi:"<<endl;
               cin>>name;
               cout<<"Tcena:"<<endl;
               cin>>price;
           }
           void putdata()
           {
               cout<<"Nazvanie knigi:"<<name<<endl;
               cout<<"Tcena:"<<price<<endl;
           }
            virtual void getData()=0;
            virtual void putData()=0;
            virtual bool isOversize()=0;
            virtual void getdat1()=0;
            virtual void putdat1()=0;
   };

class sales
{
    protected:
        float x[3];
    public:
        void getdat()
        {
            cout<<"Skidki (3 mesyatca):"<<endl;
            for (int i=0;i<3;i++)
            {
                cout<<i+1<<" mesyatc="; cin>>x[i];
            }
        }
        void putdat()
        {
            cout<<"Skidki (3 mesyatca):"<<endl;
            for (int i=0;i<3;i++)
            {
                cout<<i+1<<" mesyatc="<<x[i]<<endl;
            }
        }
        virtual void getdat1()=0;
        virtual void putdat1()=0;
};

  class book: public publication,public sales
          {
          private:
            int st;
          public:
            void getdat1()
            {
                sales::getdat();
            }

            void putdat1()
            {
                sales::putdat();
            }
            void getData()
            {
                publication::getdata();
                cout<<"Kol-vo stranic:"<<endl;
                cin>>st;
            }
            void putData()
            {
                publication::putdata();
                cout<<"Kol-vo stranic:"<<st<<endl;
            }
            bool isOversize()
            {
                return(st>800)? true:false;
            }

          };


    class tape: public publication,public sales
          {
          private:
            int m;
          public:
            void getdat1()
            {
                sales::getdat();
            }
            void putdat1()
            {
                sales::putdat();
            }
            void getData()
            {
                publication::getdata();
                cout<<"Kol-vo minut:"<<endl;
                cin>>m;
            }
            void putData()
            {
                publication::putdata();
                cout<<"Kol-vo minut:"<<m<<endl;
            }
            bool isOversize()
            {
                return(m>90)? true:false;
            }

          };


    class disk: public publication,public sales
        {
            private:
                char c;
                int r;
            public:
                void getdat1()
                {
                    sales::getdat();
                }

                void putdat1()
                {
                    sales::putdat();
                }
                void getData()
                {
                    publication::getdata();
                    cout<<"Tip zapisi[CD/DVD]?"<<endl;
                    cin>>c;
                    cout<<"Razmer?"<<endl;
                    cin>>r;
                }
                void putData()
                {
                    publication::putdata();
                    cout<<"Tip zapisi:";
                    if (c=='c') cout<<"CD"<<endl;
                    else cout<<"DVD"<<endl;
                    cout<<"Razmer:"<<r<<endl; 
                }
                bool isOversize()
                {
                    if (c=='c') return(r>700)? true:false;
                    else return(r>2800)? true:false;
                }
        };

//============================================================\\
int main()
{
    publication *pubarr[20];
    int n=0;
    char ch;
    do
    {
        cout<<"Book[B], Tape[T], Disk[D]?"<<endl;
        cin>>ch;
        if (ch=='b') pubarr[n]=new book;
        else if (ch=='t') pubarr[n]=new tape;
        else pubarr[n]=new disk;
        pubarr[n]->getData();
        pubarr[n]->getdat1();
        n++;
        cout<<"Continue[Y/N]?"<<endl;
        cin>>ch;
    }while(ch=='y');
    int i;
    for(i=0;i<n;i++)
    {
        pubarr[i]->putdata();
        pubarr[i]->putdat1();
        if(pubarr[i]->isOversize())
            cout<<"Prevyshenie razmera!"<<endl;
    }
    return 0;
}

cpp questions's user avatar

задан 16 мар 2016 в 12:19

Леонид's user avatar

6

Уберите в конце этой строки

//============================================================\\

две обратные наклонные черты, чтобы было вот так

//============================================================

И все у Вас получится :)

Причина кроется в том, что символ обратной косой черты (\) — это символ продолжения строки, если он стоит в конце строки. Все строки, заканчивающиеся обратной косой чертой (\), за которыми сразу следует символ новой строки, объединяются со следующей строкой в исходном файле, формируя логические строки из физических строк. (MSDN)

Grundy's user avatar

Grundy

80.4k9 золотых знаков78 серебряных знаков133 бронзовых знака

ответ дан 16 мар 2016 в 12:32

Max ZS's user avatar

Max ZSMax ZS

3,3511 золотой знак10 серебряных знаков25 бронзовых знаков

12

У меня проблемы с решением неизвестной проблемы, с которой я никогда не сталкивался на Arduino Nano (ATmega328). Я создаю исходный код дрона, и у него все хорошо. Но в Arduino IDE неожиданно появились ошибки.
Очевидно, я новичок в программировании. Так что помогите мне узнать, как решить эту проблему.

Я получил такие ошибки:

error: expected unqualified-id before '[' token

error: 'value' does not name a type

Quadcopter_Code_Arduino:580: error: expected unqualified-id
before '[' token

struct op[]

^

Quadcopter_Code_Arduino:589: error: 'value' does not name a type

} value;

^
typedef union accel_t_gyro_union
{
struct
{
uint8_t x_accel_h;
uint8_t x_accel_l;
uint8_t y_accel_h;
uint8_t y_accel_l;
uint8_t z_accel_h;
uint8_t z_accel_l;
uint8_t t_h;
uint8_t t_l;
uint8_t x_gyro_h;
uint8_t x_gyro_l;
uint8_t y_gyro_h;
uint8_t y_gyro_l;
uint8_t z_gyro_h;
uint8_t z_gyro_l;
} reg;
struct op[]
{
int x_accel;
int y_accel;
int z_accel;
int temperature;
int x_gyro;
int y_gyro;
int z_gyro;
} value;

};

1

Решение

Определение / Информация:

От http://en.cppreference.com/w/cpp/language/union

Объединение — это специальный тип класса, который может содержать только один из
Нестатические члены данных одновременно.

А также

Объединение настолько велико, насколько необходимо, чтобы вместить самого большого члена данных.
Другие члены данных размещаются в тех же байтах как часть этого
самый большой член.

Также:

Ваша декларация неверна и должна быть:

struct op
{
int x_accel;
int y_accel;
int z_accel;
int temperature;
int x_gyro;
int y_gyro;
int z_gyro;
} value [SIZE];

Я советую вам использовать конкретный размер для вашего массива, ИЛИ уменьшение указателя вашего типа структуры, чтобы прояснить, что вы решите, что это размер кучи позже, но объединение в стеке будет иметь размер указателя для члена. ..

(Хотя с пустыми скобками он все еще компилируется и работает в моем быстром тестировании … Я тоже должен разобраться в этом поведении.: D)

Решение:

Используйте исправленную декларацию выше.

Совет:
Используйте РАЗМЕР для массива в скобках.
Если вы еще не знаете размер, используйте указатель по причинам, указанным выше.

1

Другие решения

struct op[] {} ерунда в любом случае. Если ты хочешь struct тип по имени op, он должен быть за пределами объединения (но это не проблема, может быть проблема с его использованием где-то еще):

struct A {
uint8_t  low_byte; // depends on byte order
uint8_t high_byte;
};

struct B {
int          word;
};

union U {
A  reg;
B  val;
} variable;

Но нет необходимости в массиве вообще. Итак, второе struct должен быть также анонимным:

union accel_t_gyro_union
{
struct
{
uint8_t x_accel_h;
uint8_t x_accel_l;
uint8_t y_accel_h;
uint8_t y_accel_l;
uint8_t z_accel_h;
uint8_t z_accel_l;
uint8_t t_h;
uint8_t t_l;
uint8_t x_gyro_h;
uint8_t x_gyro_l;
uint8_t y_gyro_h;
uint8_t y_gyro_l;
uint8_t z_gyro_h;
uint8_t z_gyro_l;
} reg;
struct
{
int x_accel;
int y_accel;
int z_accel;
int temperature;
int x_gyro;
int y_gyro;
int z_gyro;
} value;
};

1

struct op[] {} выглядит странно для меня. (Я даже не знаю, как читать / интерпретировать это.)

Таким образом, я протестировал это с помощью gcc на cygwin (в упрощенной версии):

$ gcc --version
gcc (GCC) 5.4.0

$ echo 'typedef union u { struct op[] { int i; } value; };
> int main() { return 0; }
> ' > test-weird-union.c

$ gcc test-weird-union.c
test-weird-union.c:1:28: error: expected identifier or '(' before '[' token
typedef union u { struct op[] { int i; } value; };
^
test-weird-union.c:1:42: error: expected ';' before 'value'
typedef union u { struct op[] { int i; } value; };
^
test-weird-union.c:1:42: warning: useless storage class specifier in empty declaration

(Тот же вывод с gcc -std=c11.)

Код, вероятно, неправильный или, по крайней мере, не стандартный C.

ХОРОШО. Думая дополнительно об этом: как это исправить?

Немного больше фона было бы неплохо. Таким образом, рассмотрим это как подход и докажем, как его применять:

#include <stdint.h>

typedef union accel_t_gyro_union
{
struct
{
uint8_t x_accel_h;
uint8_t x_accel_l;
uint8_t y_accel_h;
uint8_t y_accel_l;
uint8_t z_accel_h;
uint8_t z_accel_l;
uint8_t t_h;
uint8_t t_l;
uint8_t x_gyro_h;
uint8_t x_gyro_l;
uint8_t y_gyro_h;
uint8_t y_gyro_l;
uint8_t z_gyro_h;
uint8_t z_gyro_l;
} reg;
struct op
{
int16_t x_accel;
int16_t y_accel;
int16_t z_accel;
int16_t temperature;
int16_t x_gyro;
int16_t y_gyro;
int16_t z_gyro;
} value;
} accel_t_gyro_union;

Следующие вещи, которые я сделал:

  1. Удалил [] позади op исправить синтаксическую ошибку.

  2. Изменил int в int16_t, Это гарантирует, что этот код работает и на не 16-битных платформах.

  3. добавленной accel_t_gyro_union до конца typedef, Это может не быть необходимым, но я чувствовал себя комфортно с этим.

Снова проверил с помощью gcc на cygwin:

$ gcc -std=c11 test-weird-union.c

По крайней мере, нет синтаксических ошибок. Остальное за пределами моих знаний.

1

Вчера написал программу, всё было хорошо, работала нормально. Сегодня решил кое-что в ней доделать, как выяснилось, что теперь там появилась ошибка, хотя код не редактировался с момента последнего «удачного» запуска.

Теперь выдаёт такую ошибку:

[Error] expected unqualified-id before ‘{‘ token (скобка после объявления мэйна).

#include <iostream>
#include <cmath>
#include <string.h>
#include <stdio.h>

using namespace std;

class publication
   {
       protected: char name[30];
                  float price;

       public :
           void getdata()
           {
               cout<<"Nazvanie knigi:"<<endl;
               cin>>name;
               cout<<"Tcena:"<<endl;
               cin>>price;
           }
           void putdata()
           {
               cout<<"Nazvanie knigi:"<<name<<endl;
               cout<<"Tcena:"<<price<<endl;
           }
            virtual void getData()=0;
            virtual void putData()=0;
            virtual bool isOversize()=0;
            virtual void getdat1()=0;
            virtual void putdat1()=0;
   };

class sales
{
    protected:
        float x[3];
    public:
        void getdat()
        {
            cout<<"Skidki (3 mesyatca):"<<endl;
            for (int i=0;i<3;i++)
            {
                cout<<i+1<<" mesyatc="; cin>>x[i];
            }
        }
        void putdat()
        {
            cout<<"Skidki (3 mesyatca):"<<endl;
            for (int i=0;i<3;i++)
            {
                cout<<i+1<<" mesyatc="<<x[i]<<endl;
            }
        }
        virtual void getdat1()=0;
        virtual void putdat1()=0;
};

  class book: public publication,public sales
          {
          private:
            int st;
          public:
            void getdat1()
            {
                sales::getdat();
            }

            void putdat1()
            {
                sales::putdat();
            }
            void getData()
            {
                publication::getdata();
                cout<<"Kol-vo stranic:"<<endl;
                cin>>st;
            }
            void putData()
            {
                publication::putdata();
                cout<<"Kol-vo stranic:"<<st<<endl;
            }
            bool isOversize()
            {
                return(st>800)? true:false;
            }

          };


    class tape: public publication,public sales
          {
          private:
            int m;
          public:
            void getdat1()
            {
                sales::getdat();
            }
            void putdat1()
            {
                sales::putdat();
            }
            void getData()
            {
                publication::getdata();
                cout<<"Kol-vo minut:"<<endl;
                cin>>m;
            }
            void putData()
            {
                publication::putdata();
                cout<<"Kol-vo minut:"<<m<<endl;
            }
            bool isOversize()
            {
                return(m>90)? true:false;
            }

          };


    class disk: public publication,public sales
        {
            private:
                char c;
                int r;
            public:
                void getdat1()
                {
                    sales::getdat();
                }

                void putdat1()
                {
                    sales::putdat();
                }
                void getData()
                {
                    publication::getdata();
                    cout<<"Tip zapisi[CD/DVD]?"<<endl;
                    cin>>c;
                    cout<<"Razmer?"<<endl;
                    cin>>r;
                }
                void putData()
                {
                    publication::putdata();
                    cout<<"Tip zapisi:";
                    if (c=='c') cout<<"CD"<<endl;
                    else cout<<"DVD"<<endl;
                    cout<<"Razmer:"<<r<<endl; 
                }
                bool isOversize()
                {
                    if (c=='c') return(r>700)? true:false;
                    else return(r>2800)? true:false;
                }
        };

//============================================================\
int main()
{
    publication *pubarr[20];
    int n=0;
    char ch;
    do
    {
        cout<<"Book[B], Tape[T], Disk[D]?"<<endl;
        cin>>ch;
        if (ch=='b') pubarr[n]=new book;
        else if (ch=='t') pubarr[n]=new tape;
        else pubarr[n]=new disk;
        pubarr[n]->getData();
        pubarr[n]->getdat1();
        n++;
        cout<<"Continue[Y/N]?"<<endl;
        cin>>ch;
    }while(ch=='y');
    int i;
    for(i=0;i<n;i++)
    {
        pubarr[i]->putdata();
        pubarr[i]->putdat1();
        if(pubarr[i]->isOversize())
            cout<<"Prevyshenie razmera!"<<endl;
    }
    return 0;
}

I am working on a project and keep getting this error message in Arduino IDE:

expected unqualified-id before ‘/’ token
Arduino highlights «/ / Maximum length of the array» as the problem.
Here is the code that I am trying to use:

    # Include <SPI.h>
# Define uchar unsigned char
# Define uint unsigned int
/ / Maximum length of the array
# Define MAX_LEN 16
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / Set the pin
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
const int chipSelectPin = 10; / / if the control panel for the UNO, 328,168
const int chipSelectPin = 53; / / If the control panel is mega 2560,1280
const int NRSTPD = 5;
/ / MF522 command word
# Define PCD_IDLE 0x00 / / NO action; cancel the current command
# Define PCD_AUTHENT 0x0E / / authentication key
# Define PCD_RECEIVE 0x08 / / receive data
# Define PCD_TRANSMIT 0x04 / / Transmit Data
# Define PCD_TRANSCEIVE 0x0C / / Send and receive data
# Define PCD_RESETPHASE 0x0F / / Reset
# Define PCD_CALCCRC 0x03 / / CRC calculation
/ / Mifare_One card command word
# Define PICC_REQIDL 0x26 / / find the antenna area does not enter hibernation
# Define PICC_REQALL 0x52 / / find all the cards antenna area
# Define PICC_ANTICOLL 0x93 / / anti-collision
# Define PICC_SElECTTAG 0x93 / / election card
# Define PICC_AUTHENT1A 0x60 / / authentication key A
# Define PICC_AUTHENT1B 0x61 / / authentication key B
# Define PICC_READ 0x30 / / Read Block
# Define PICC_WRITE 0xA0 / / write block
# Define PICC_DECREMENT 0xC0 / /
# Define PICC_INCREMENT 0xC1 / /
# Define PICC_RESTORE 0xC2 / / transfer block data to the buffer
# Define PICC_TRANSFER 0xB0 / / save the data in the buffer
# Define PICC_HALT 0x50 / / Sleep
/ / And MF522 communication error code is returned when
# Define MI_OK 0
# Define MI_NOTAGERR 1
# Define MI_ERR 2
/ / ------------------ MFRC522 register ---------------
/ / Page 0: Command and Status
# Define Reserved00 0x00
# Define CommandReg 0x01
# Define CommIEnReg 0x02
# Define DivlEnReg 0x03
# Define CommIrqReg 0x04
# Define DivIrqReg 0x05
# Define ErrorReg 0x06
# Define Status1Reg 0x07
# Define Status2Reg 0x08
# Define FIFODataReg 0x09
# Define FIFOLevelReg 0x0A
# Define WaterLevelReg 0x0B
# Define ControlReg 0x0C
# Define BitFramingReg 0x0D
# Define CollReg 0x0E
# Define Reserved01 0x0F
/ / Page 1: Command
# Define Reserved10 0x10
# Define ModeReg 0x11
# Define TxModeReg 0x12
# Define RxModeReg 0x13
# Define TxControlReg 0x14
# Define TxAutoReg 0x15
# Define TxSelReg 0x16
# Define RxSelReg 0x17
# Define RxThresholdReg 0x18
# Define DemodReg 0x19
# Define Reserved11 0x1A
# Define Reserved12 0x1B
# Define MifareReg 0x1C
# Define Reserved13 0x1D
# Define Reserved14 0x1E
# Define SerialSpeedReg 0x1F
/ / Page 2: CFG
# Define Reserved20 0x20
# Define CRCResultRegM 0x21
# Define CRCResultRegL 0x22
# Define Reserved21 0x23
# Define ModWidthReg 0x24
# Define Reserved22 0x25
# Define RFCfgReg 0x26
# Define GsNReg 0x27
# Define CWGsPReg 0x28
# Define ModGsPReg 0x29
# Define TModeReg 0x2A
# Define TPrescalerReg 0x2B
# Define TReloadRegH 0x2C
# Define TReloadRegL 0x2D
# Define TCounterValueRegH 0x2E
# Define TCounterValueRegL 0x2F
/ / Page 3: TestRegister
# Define Reserved30 0x30
# Define TestSel1Reg 0x31
# Define TestSel2Reg 0x32
# Define TestPinEnReg 0x33
# Define TestPinValueReg 0x34
# Define TestBusReg 0x35
# Define AutoTestReg 0x36
# Define VersionReg 0x37
# Define AnalogTestReg 0x38
# Define TestDAC1Reg 0x39
# Define TestDAC2Reg 0x3A
# Define TestADCReg 0x3B
# Define Reserved31 0x3C
# Define Reserved32 0x3D
# Define Reserved33 0x3E
# Define Reserved34 0x3F
/ / -----------------------------------------------
/ / 4 bytes card serial number, the first 5 bytes for the checksum byte
uchar serNum [5];
uchar writeDate [16] = {'T', 'e', 'n', 'g', '', 'B', 'o', 0, 0, 0, 0, 0, 0, 0, 0, 0};
/ / Sector A password, 16 sectors, each sector password 6Byte
uchar sectorKeyA [16] [16] = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
};
uchar sectorNewKeyA [16] [16] = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xff, 0x07, 0x80, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xff, 0x07, 0x80, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
};
void setup () {
Serial.begin (9600); / / RFID reader SOUT pin connected to Serial
RX pin at 2400bps
/ / Start the SPI library:
SPI.begin ();
pinMode (chipSelectPin, OUTPUT); / / Set digital pin 10 as OUTPUT to connect
it to the RFID / ENABLE pin
digitalWrite (chipSelectPin, LOW); / / Activate the RFID reader
pinMode (NRSTPD, OUTPUT); / / Set digital pin 10, Not Reset and
Power-down
digitalWrite (NRSTPD, HIGH);
MFRC522_Init ();
}
void loop ()
{
uchar i, tmp;
uchar status;
uchar str [MAX_LEN];
uchar RC_size;
uchar blockAddr; / / select the operating block addresses 0 to 63
/ / Find the card, back card type
status = MFRC522_Request (PICC_REQIDL, str);
if (status == MI_OK)
{
}
/ / Anti-collision, return card serial number 4 bytes
status = MFRC522_Anticoll (str);
memcpy (serNum, str, 5);
if (status == MI_OK)
{
Serial.println ("The card's number is:");
Serial.print (serNum [0], BIN);
Serial.print (serNum [1], BIN);
Serial.print (serNum [2], BIN);
Serial.print (serNum [3], BIN);
Serial.print (serNum [4], BIN);
Serial.println ("");
}
/ / Election card, return to card capacity
RC_size = MFRC522_SelectTag (serNum);
if (RC_size! = 0)
{}
/ / Write data card
blockAddr = 7; / / data block 7
status = MFRC522_Auth (PICC_AUTHENT1A, blockAddr, sectorKeyA [blockAddr / 4],
serNum); / / Certification
if (status == MI_OK)
{
/ / Write data
status = MFRC522_Write (blockAddr, sectorNewKeyA [blockAddr / 4]);
Serial.print ("set the new card password, and can modify the data of the Sector: ");
Serial.print (blockAddr / 4, DEC);
/ / Write data
blockAddr = blockAddr - 3;
status = MFRC522_Write (blockAddr, writeDate);
if (status == MI_OK)
{
Serial.println ("OK!");
}
}
/ / Reader
blockAddr = 7; / / data block 7
status = MFRC522_Auth (PICC_AUTHENT1A, blockAddr,
sectorNewKeyA [blockAddr / 4], serNum); / / Certification
if (status == MI_OK)
{
/ / Read data
blockAddr = blockAddr - 3;
status = MFRC522_Read (blockAddr, str);
if (status == MI_OK)
{
Serial.println ("Read from the card, the data is:");
for (i = 0; i <16; i + +)
{
Serial.print (str [i]);
}
Serial.println ("");
}
}
Serial.println ("");
MFRC522_Halt (); / / command card into hibernation
}

If you see why, please tell me ASAP.
Thank you.

I am working on a project and keep getting this error message in Arduino IDE:

expected unqualified-id before ‘/’ token
Arduino highlights «/ / Maximum length of the array» as the problem.
Here is the code that I am trying to use:

    # Include <SPI.h>
# Define uchar unsigned char
# Define uint unsigned int
/ / Maximum length of the array
# Define MAX_LEN 16
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / Set the pin
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
const int chipSelectPin = 10; / / if the control panel for the UNO, 328,168
const int chipSelectPin = 53; / / If the control panel is mega 2560,1280
const int NRSTPD = 5;
/ / MF522 command word
# Define PCD_IDLE 0x00 / / NO action; cancel the current command
# Define PCD_AUTHENT 0x0E / / authentication key
# Define PCD_RECEIVE 0x08 / / receive data
# Define PCD_TRANSMIT 0x04 / / Transmit Data
# Define PCD_TRANSCEIVE 0x0C / / Send and receive data
# Define PCD_RESETPHASE 0x0F / / Reset
# Define PCD_CALCCRC 0x03 / / CRC calculation
/ / Mifare_One card command word
# Define PICC_REQIDL 0x26 / / find the antenna area does not enter hibernation
# Define PICC_REQALL 0x52 / / find all the cards antenna area
# Define PICC_ANTICOLL 0x93 / / anti-collision
# Define PICC_SElECTTAG 0x93 / / election card
# Define PICC_AUTHENT1A 0x60 / / authentication key A
# Define PICC_AUTHENT1B 0x61 / / authentication key B
# Define PICC_READ 0x30 / / Read Block
# Define PICC_WRITE 0xA0 / / write block
# Define PICC_DECREMENT 0xC0 / /
# Define PICC_INCREMENT 0xC1 / /
# Define PICC_RESTORE 0xC2 / / transfer block data to the buffer
# Define PICC_TRANSFER 0xB0 / / save the data in the buffer
# Define PICC_HALT 0x50 / / Sleep
/ / And MF522 communication error code is returned when
# Define MI_OK 0
# Define MI_NOTAGERR 1
# Define MI_ERR 2
/ / ------------------ MFRC522 register ---------------
/ / Page 0: Command and Status
# Define Reserved00 0x00
# Define CommandReg 0x01
# Define CommIEnReg 0x02
# Define DivlEnReg 0x03
# Define CommIrqReg 0x04
# Define DivIrqReg 0x05
# Define ErrorReg 0x06
# Define Status1Reg 0x07
# Define Status2Reg 0x08
# Define FIFODataReg 0x09
# Define FIFOLevelReg 0x0A
# Define WaterLevelReg 0x0B
# Define ControlReg 0x0C
# Define BitFramingReg 0x0D
# Define CollReg 0x0E
# Define Reserved01 0x0F
/ / Page 1: Command
# Define Reserved10 0x10
# Define ModeReg 0x11
# Define TxModeReg 0x12
# Define RxModeReg 0x13
# Define TxControlReg 0x14
# Define TxAutoReg 0x15
# Define TxSelReg 0x16
# Define RxSelReg 0x17
# Define RxThresholdReg 0x18
# Define DemodReg 0x19
# Define Reserved11 0x1A
# Define Reserved12 0x1B
# Define MifareReg 0x1C
# Define Reserved13 0x1D
# Define Reserved14 0x1E
# Define SerialSpeedReg 0x1F
/ / Page 2: CFG
# Define Reserved20 0x20
# Define CRCResultRegM 0x21
# Define CRCResultRegL 0x22
# Define Reserved21 0x23
# Define ModWidthReg 0x24
# Define Reserved22 0x25
# Define RFCfgReg 0x26
# Define GsNReg 0x27
# Define CWGsPReg 0x28
# Define ModGsPReg 0x29
# Define TModeReg 0x2A
# Define TPrescalerReg 0x2B
# Define TReloadRegH 0x2C
# Define TReloadRegL 0x2D
# Define TCounterValueRegH 0x2E
# Define TCounterValueRegL 0x2F
/ / Page 3: TestRegister
# Define Reserved30 0x30
# Define TestSel1Reg 0x31
# Define TestSel2Reg 0x32
# Define TestPinEnReg 0x33
# Define TestPinValueReg 0x34
# Define TestBusReg 0x35
# Define AutoTestReg 0x36
# Define VersionReg 0x37
# Define AnalogTestReg 0x38
# Define TestDAC1Reg 0x39
# Define TestDAC2Reg 0x3A
# Define TestADCReg 0x3B
# Define Reserved31 0x3C
# Define Reserved32 0x3D
# Define Reserved33 0x3E
# Define Reserved34 0x3F
/ / -----------------------------------------------
/ / 4 bytes card serial number, the first 5 bytes for the checksum byte
uchar serNum [5];
uchar writeDate [16] = {'T', 'e', 'n', 'g', '', 'B', 'o', 0, 0, 0, 0, 0, 0, 0, 0, 0};
/ / Sector A password, 16 sectors, each sector password 6Byte
uchar sectorKeyA [16] [16] = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
};
uchar sectorNewKeyA [16] [16] = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xff, 0x07, 0x80, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xff, 0x07, 0x80, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
};
void setup () {
Serial.begin (9600); / / RFID reader SOUT pin connected to Serial
RX pin at 2400bps
/ / Start the SPI library:
SPI.begin ();
pinMode (chipSelectPin, OUTPUT); / / Set digital pin 10 as OUTPUT to connect
it to the RFID / ENABLE pin
digitalWrite (chipSelectPin, LOW); / / Activate the RFID reader
pinMode (NRSTPD, OUTPUT); / / Set digital pin 10, Not Reset and
Power-down
digitalWrite (NRSTPD, HIGH);
MFRC522_Init ();
}
void loop ()
{
uchar i, tmp;
uchar status;
uchar str [MAX_LEN];
uchar RC_size;
uchar blockAddr; / / select the operating block addresses 0 to 63
/ / Find the card, back card type
status = MFRC522_Request (PICC_REQIDL, str);
if (status == MI_OK)
{
}
/ / Anti-collision, return card serial number 4 bytes
status = MFRC522_Anticoll (str);
memcpy (serNum, str, 5);
if (status == MI_OK)
{
Serial.println ("The card's number is:");
Serial.print (serNum [0], BIN);
Serial.print (serNum [1], BIN);
Serial.print (serNum [2], BIN);
Serial.print (serNum [3], BIN);
Serial.print (serNum [4], BIN);
Serial.println ("");
}
/ / Election card, return to card capacity
RC_size = MFRC522_SelectTag (serNum);
if (RC_size! = 0)
{}
/ / Write data card
blockAddr = 7; / / data block 7
status = MFRC522_Auth (PICC_AUTHENT1A, blockAddr, sectorKeyA [blockAddr / 4],
serNum); / / Certification
if (status == MI_OK)
{
/ / Write data
status = MFRC522_Write (blockAddr, sectorNewKeyA [blockAddr / 4]);
Serial.print ("set the new card password, and can modify the data of the Sector: ");
Serial.print (blockAddr / 4, DEC);
/ / Write data
blockAddr = blockAddr - 3;
status = MFRC522_Write (blockAddr, writeDate);
if (status == MI_OK)
{
Serial.println ("OK!");
}
}
/ / Reader
blockAddr = 7; / / data block 7
status = MFRC522_Auth (PICC_AUTHENT1A, blockAddr,
sectorNewKeyA [blockAddr / 4], serNum); / / Certification
if (status == MI_OK)
{
/ / Read data
blockAddr = blockAddr - 3;
status = MFRC522_Read (blockAddr, str);
if (status == MI_OK)
{
Serial.println ("Read from the card, the data is:");
for (i = 0; i <16; i + +)
{
Serial.print (str [i]);
}
Serial.println ("");
}
}
Serial.println ("");
MFRC522_Halt (); / / command card into hibernation
}

If you see why, please tell me ASAP.
Thank you.

ОЖИДАЕМЫЙ НЕКВАЛИФИЦИРОВАННЫЙ ИДЕНТИФИКАТОР ДО «else» ОШИБКА ARDUINO

Мне нужно сделать программу, которая получает часть от пользователя, а затем упрощает ее.

Я знаю, как это сделать, и выполнил большую часть кода, но все время получаю сообщение об ошибке «error: expected unqualified-id before ‘.’ Token».

Я объявил структуру под названием ReducedForm, которая содержит упрощенные числитель и знаменатель, теперь я пытаюсь отправить упрощенные значения в эту структуру. Вот мой код;

В Rational.h;

#ifndef RATIONAL_H #define RATIONAL_H using namespace std; struct ReducedForm { int iSimplifiedNumerator; int iSimplifiedDenominator; }; //I have a class here for the other stuff in the program #endif 

В Rational.cpp;

#include  #include 'rational.h' using namespace std; void Rational :: SetToReducedForm(int iNumerator, int iDenominator) { int iGreatCommDivisor = 0; iGreatCommDivisor = GCD(iNumerator, iDenominator); //The next 2 lines is where i get the error ReducedForm.iSimplifiedNumerator = iNumerator/iGreatCommDivisor; ReducedForm.iSimplifiedDenominator = iDenominator/iGreatCommDivisor; }; 
  • 2 «Использование пространства имен» в файле заголовка — неприятное дело для пользователей вашего файла.

Вы пытаетесь получить доступ к структуре статически с помощью . вместо того ::, ни его члены static. Либо создать экземпляр ReducedForm:

ReducedForm rf; rf.iSimplifiedNumerator = 5; 

или измените членов на static как это:

struct ReducedForm { static int iSimplifiedNumerator; static int iSimplifiedDenominator; }; 

В последнем случае вы должны получить доступ к участникам с помощью :: вместо того . Однако я очень сомневаюсь, что последнее — то, что вы собираетесь делать;)

Имя структуры ReducedForm; вам нужно сделать объект (экземпляр struct или class) и используйте это. Сделай это:

ReducedForm MyReducedForm; MyReducedForm.iSimplifiedNumerator = iNumerator/iGreatCommDivisor; MyReducedForm.iSimplifiedDenominator = iDenominator/iGreatCommDivisor; 

ReducedForm это тип, поэтому вы не можете сказать

ReducedForm.iSimplifiedNumerator = iNumerator/iGreatCommDivisor; 

Вы можете использовать только . оператор на экземпляре:

ReducedForm rf; rf.iSimplifiedNumerator = iNumerator/iGreatCommDivisor; 
  • о да, теперь я это вижу. Не знаю, как я это пропустил. Глупая ошибка. Спасибо

Tweet

Share

Link

Plus

Send

Send

Pin

Я продолжаю получать эту ошибку при работе с g ++.

Вот эта строка кода:

Register register = new Register(til_amt, num_ones);

Вот определение заголовка:

Register(int, int);

Вот определение реализации:

Register::Register(int amt, int ones)
{
    init();

    til_amt += amt;
    num_ones += ones;
}

Функция init () определяется встроенной функцией и просто устанавливает для полей значение 0. Я выделил проблему в этих строках кода, я просмотрел все страницы stackoverflow / google и, похоже, не смог решить проблему. Я даже попытался разбить экземпляр объекта на 2 строки, но это тоже не сработало.

2 ответа

Лучший ответ

register — ключевое слово. Его нельзя использовать как переменную.

Из стандарта C ++:

7.1.1 Спецификаторы класса хранения [dcl.stc]

1 Спецификаторы класса хранения:

   storage-class-specifier:  
      register
      static
      thread_local
      extern
      mutable


4

R Sahu
5 Дек 2015 в 05:46

register — ключевое слово, поэтому вы не можете использовать его в качестве имени переменной. Переименуйте его во что-нибудь еще, и он должен работать.

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


1

Weak to Enuma Elish
5 Дек 2015 в 05:46

#c #oop #templates #vector #friend

Вопрос:

Я пытаюсь написать векторный класс, который включает сортировку функций друзей(алгоритм-сортировка пузырьков), и у меня есть некоторые трудности с этой функцией. Эта функция сортировки также является шаблонной функцией итератора шаблонов, а итератор имеет тип T* в векторе класса. Ниже приведен мой код:

 namespace THU {
template <class T>
void iswap(T* a, T* b) {
    T tmp = *a;
    a = b;
    b = amp;tmp;
}
template <class T>
class iVector {
   protected:
    int _size;
    int use;
    T* _vector;

   public:
    typedef T* iterator;
    iVector(int n) : _size(n) {
        _vector = new T[n];
        use = 0;
    }
    iterator begin() { return _vector; }
    iterator end() { return begin()   use; }
    void clear() { use = 0; }
    bool empty() const {
        if (use == 0)
            return true;
        else
            return false;
    }
    void pop_back() {
        if (use > 0) {
            use -= 1;
        } else
            throw use;
    }
    void push_back(const Tamp; v) {
        if (use < _size) {
            _vector[use] = v;
            use  ;
        } else
            throw use;
    }
    Tamp; operator[](int n) {
        if (n >= 0 amp;amp; n < use) {
            return _vector[n];
        } else
            throw use;
    }
    friend void sort<iterator>(iterator begin, iterator end);
    void print() {
        for (int i = 0; i < use; i  )
            std::cout << _vector[i] << " ";
        std::cout << std::endl;
    }
};
template <class iterator>
void sort(iterator begin, iterator end) {
    iterator i = end - 1;
    for (; i != begin; i--) {
        iterator j = begin;
        for (; j != i; j  ) {
            if (*j > *(j   1))
                iswap(j, j   1);
        }
    }
}
}  // namespace THU
 

и это встречает ошибку в названии. Кто-нибудь может мне помочь?

Комментарии:

1. обе ошибки находятся в положении friend void sort<iterator>

2. Как ты думаешь, почему sort нужно быть другом? Он не имеет доступа ни к одному члену iVector .

Ответ №1:

Вам нужно объявить sort об этом заранее; или переместить определение sort перед определением iVector напрямую. Например.

 template <class iterator>
void sort(iterator begin, iterator end);

template <class T>
class iVector {
    ...
    friend void sort<iterator>(iterator begin, iterator end);
    ...
};

...
 

Если вы хотите объявить шаблон другом, это должно быть

 template <class T>
class iVector {
    ...
    // friend declaration
    template <class iterator>
    friend void sort(iterator begin, iterator end);
    ...
};

// definition
template <class iterator>
void sort(iterator begin, iterator end) {
    ...
}
 

Комментарии:

1. Ух ты, большое тебе спасибо! Это действительно удается. Так почему же это могло произойти? Обычно мы сначала объявляем функцию друга в классе, а затем пишем ее определение?

2. @dubugger Отклик изменен.

когда я хочу скомпилировать, я получаю:
Probléme: ожидаемый неквалифицированный идентификатор до «возвращения»
return 0;
о последней строке:
erreur: expexted декларация перед {токеном

Я оставил код без изменений только в средней части, которую я изменил… в чем проблема???
вот мой код:


#include <iostream>
using namespace std;

int main()
{
  cout << "Pensez a un personnage : Mlle Rose, le Professeur Violet, "
       << "le Colonel Moutarde," << endl
       << "le Reverend Olive ou Mme Leblanc." << endl << endl;

  cout << "Votre personnage a-t-il des moustaches (1 : oui, 0 : non) ? ";
  bool moustaches;
  cin >> moustaches;

  cout << "Votre personnage porte-t-il des lunettes ? ";
  bool lunettes;
  cin >> lunettes;

  cout << "Votre personnage porte-t-il un chapeau ? ";
  bool chapeau;
  cin >> chapeau;

  cout << "Est-ce que votre personnage est un homme ? ";
  bool homme;
  cin >> homme;

  cout << "==> Le personnage auquel vous pensez est ";

  if (chapeau) {
    /*******************************************
     * Completez le programme a partir d'ici.
     *******************************************/
    cout << "le Professeur Violet";

    else if (moustaches) {
        cout << "le Colonel Moutarde";
    }
    else if (not lunettes) {
        cout << "Mlle Rose";
    }
    else if (homme) {
        cout <<"le Révérend Olive";
    }
    else {
        cout <<"Mme Leblanc";
    }

    /*******************************************
     * Ne rien modifier apres cette ligne.
     *******************************************/
  }

  cout << endl;

  return 0;
}


----------

04 окт. 2013, в 23:27

Поделиться

Источник

4 ответа

if (chapeau) {

Вы забыли конечную фигуру в этом выражении if, поэтому последующий else if считается синтаксической ошибкой. Вам нужно добавить скобку, когда тело оператора if завершено:

if (chapeau) {
    cout << "le Professeur Violet";
}
else if (moustaches) {
    cout << "le Colonel Moutarde";
}
// ...

0x499602D2
04 окт. 2013, в 21:40

Поделиться

Просто ради людей, которые приземлились здесь по той же причине, я сделал:

Не используйте зарезервированные ключевые слова

Я назвал функцию в определении класса delete(), которая является зарезервированным ключевым словом и не должна использоваться как имя функции. Переименование его на удаление() (что также имело смысл семантически в моем случае) разрешило проблему.

Список зарезервированных ключевых слов:
http://en.cppreference.com/w/cpp/keyword

Я цитирую:
«Поскольку они используются языком, эти ключевые слова недоступны для переопределения или перегрузки».

Niko
13 окт. 2016, в 12:35

Поделиться

Предложения:

  • используйте согласованные 3-4 отступов в пространстве, и вы найдете эти проблемы намного проще
  • используйте стиль привязки, который выравнивает {} по вертикали, и вы быстро увидите эти проблемы.
  • всегда отступ блокирует другой уровень
  • используйте редактор подсветки синтаксиса, это поможет, вы поблагодарите меня позже

например,

type
functionname( arguments )
{
    if (something)
    {
        do stuff
    }
    else
    {
        do other stuff
    }
    switch (value)
    {
        case 'a':
            astuff
            break;
        case 'b':
            bstuff
            //fallthrough //always comment fallthrough as intentional
        case 'c':
            break;
        default: //always consider default, and handle it explicitly
            break;
    }
    while ( the lights are on )
    {
        if ( something happened )
        {
            run around in circles
            if ( you are scared ) //yeah, much more than 3-4 levels of indent are too many!
            {
                scream and shout
            }
        }
    }
    return typevalue; //always return something, you'll thank me later
}

ChuckCottrill
05 окт. 2013, в 01:29

Поделиться

Вам нужно переместить «}» до строки cout << endl; до строки до первого else.

CS Pei
04 окт. 2013, в 22:56

Поделиться

Ещё вопросы

  • 0MySQL запрос для сбора некорректно хранимых данных
  • 1извлечение имени файла с расширением формы URL
  • 0kohana — обрезать результаты БД ORM перед передачей для просмотра
  • 0Обтекание интерфейсов dx9 и функций перехвата
  • 0AES — Crypto JS & PHP
  • 0Проблемы с добавлением ключевых слов с помощью AdWords API
  • 1Заменить первую строку файла в андроиде
  • 1Как получить img src-ссылки из элемента управления WebBrowser
  • 1правильный способ получения широты и долготы в Android
  • 0Угловая перезагрузка D3 Chart Директива после события
  • 1Рассчитать Tf-Idf баллы в пандах?
  • 0обновить извлеченное значение формы из mysql
  • 0JQuery Mobile — все, что содержится в новых Div
  • 0Значение переключателя отправляется как «вкл» при отправке формы
  • 0быстрое заполнение strcpy для одного слова
  • 1Почему я получаю flask.cli.NoAppException: при импорте «приложения» была вызвана ошибка ImportError?
  • 1Заменить последний матч регулярного выражения
  • 1Эффективно сравнивайте серии поплавков панд с рядами панд
  • 1Вызывать сборщик мусора после ImageList.Items.Clear ()?
  • 0Ось даты AngularJs UI-диаграммы не работает
  • 0Как выбрать неагрегированные столбцы в запросе с предложением GROUP BY, которое функционально не зависит от столбцов в предложении GROUP BY?
  • 0Как включить медленный журнал запросов для движка Amazon «Aurora MySQL»?
  • 0Можете ли вы передать переменную Javascript из одной функции в другую, используя HTML
  • 0Используйте JSON для отображения контента из базы данных
  • 1Заголовки отсутствуют, даже если они явно указаны при чтении файла .ORC с помощью PySpark
  • 1Преобразовать ‘Task <IList <T >>’ в ‘IList <T>’
  • 1Каковы некоторые методы динамической проверки для универсального класса?
  • 1Проблемы с p5.js при отображении альфа-канала
  • 0Мой список объектов уничтожается
  • 1Переместить позицию таблицы Matplotlib Python
  • 1Как поместить галерею в виджет на домашнем экране?
  • 1Есть ли способ изменить атрибуты узла карты сайта во время выполнения?
  • 1показывает неправильный ответ для общего объема физической памяти в Java
  • 0Y-ось углового NVD3 устанавливает минимальное значение данных в качестве максимального значения диапазона
  • 0Отключить всплывающую подсказку текста компонентов в iframe (другой домен)?
  • 0Система RBAC с двумя параметрами
  • 0операторы if и if-else не работают с c ++
  • 1Как найти элемент в базе данных, используя linq
  • 0как остановить быстрые события зависания в JQuery
  • 1Деструктуризация объекта параметра функции приводит к неопределенным переменным
  • 0Изменить порядок ассоциативного массива после удаления одного элемента
  • 1«Метод должен возвращать результат» при вызове другого метода, который выдает только исключение
  • 1Android настроить строку в ListPreference
  • 0Получить максимальную дату для каждой строки в таблице в SQL
  • 1Как игнорировать разделитель CSV в кавычках?
  • 1работающий андроид источник из git tree
  • 1Видимо противоречивое поведение функции Javascript
  • 1Альтернатива .Equals () при передаче нулевого значения
  • 1Chart.js не показывает динамически заполненные данные
  • 0PHP получает выбранные строки таблицы из флажков

Сообщество Overcoder

Сб, 17/09/2022 — 23:19

#1

v258

v258 аватар

Offline

Зарегистрирован: 25.05.2020

Там же и номера строк с ошибками указываться должны. Но навскидку подскажу — обратите внимание на строки 1 и 8, ошибки в них

  • Войдите на сайт для отправки комментариев

Сб, 17/09/2022 — 23:21

#2

b707

Offline

Зарегистрирован: 26.05.2017

isheev denis — после названия функции точка с запятой лишняя

  • Войдите на сайт для отправки комментариев

Сб, 17/09/2022 — 23:34

#3

isheev denis

Offline

Зарегистрирован: 17.09.2022

теперь пишет redefinition of ‘void setup()’ хотя библиотек у меня нету

  • Войдите на сайт для отправки комментариев

Сб, 17/09/2022 — 23:43

#4

v258

v258 аватар

Offline

Зарегистрирован: 25.05.2020

Еще раз — в строках 1 и 8 уберите точку с запятой. Больше ничего делать не нужно

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 10:54

#5

isheev denis

Offline

Зарегистрирован: 17.09.2022

void setup()

 {

pinMode (2, OUTPUT);

 }

void loop()

{

digitalWrite(2, HIGH);

delay(1000);

digitalWrite(2, LOW);

delay(300);

}

теперь пишет Compilation error: redefinition of ‘void setup()’ указывая на строки 1 и 8 

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 11:16

#6

kalapanga

Offline

Зарегистрирован: 23.10.2016

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 11:32

#7

b707

Offline

Зарегистрирован: 26.05.2017

isheev denis пишет:

теперь пишет Compilation error: redefinition of ‘void setup()’ указывая на строки 1 и 8 

такой ошибки в этом коде нет — значит вы запускаете не этот код. Или и правда, записали два ino файла в одну папку.

И по-хорошему, вам бы для начала какую-нить методичку для чайников почитать — куча проблем решится сама. И только потом в форум писать, а то вопросы. что вы задаете — просто ниже плинтуса

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 13:42

#8

BOOM

BOOM аватар

Offline

Зарегистрирован: 14.11.2018

А есть они вообще в природе то? Ну методички, что для чайников по ардуино?

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 13:49

#9

ЕвгенийП

ЕвгенийП аватар

Offline

Зарегистрирован: 25.05.2015

Пальцем считали?

Потом не удивляйтесь, что на голову садятся.

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 13:52

#10

ЕвгенийП

ЕвгенийП аватар

Offline

Зарегистрирован: 25.05.2015

BOOM пишет:

А есть они вообще в природе то? Ну методички, что для чайников по ардуино?

Конечно. Например.

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 15:33

#11

isheev denis

Offline

Зарегистрирован: 17.09.2022

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 16:27

#12

ua6em

ua6em аватар

Offline

Зарегистрирован: 17.08.2016

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 16:40

#13

ЕвгенийП

ЕвгенийП аватар

Offline

Зарегистрирован: 25.05.2015

ua6em пишет:

про SPI там ни слова )))

А что, должно быть? Там и про захват таймера ни слова!

Просили 

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 19:57

#14

ua6em

ua6em аватар

Offline

Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:

про SPI там ни слова )))

А что, должно быть? Там и про захват таймера ни слова!

Просили 

так это выходит совсем совсем для чайников )))

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 20:43

#15

BOOM

BOOM аватар

Offline

Зарегистрирован: 14.11.2018

ua6em пишет:

про SPI там ни слова )))

Отходи от компьютера иногда. В этой теме о spi ни слова…

  • Войдите на сайт для отправки комментариев

Вс, 18/09/2022 — 20:56

#16

ua6em

ua6em аватар

Offline

Зарегистрирован: 17.08.2016

BOOM пишет:

ua6em пишет:

про SPI там ни слова )))

Отходи от компьютера иногда. В этой теме о spi ни слова…

а я что делаю, сегодня подготовку под бетонирование, пока на улице до +35 не поднялось…

  • Войдите на сайт для отправки комментариев

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Ошибка обновления системы 3 asus
  • Ошибка ожидался идентификатор pascal
  • Ошибка обновления сос
  • Ошибка ограничение мощности двигателя volvo xc60
  • Ошибка объектива canon pc1311

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии