Сбой при возврате нового элемента кода возможно синтаксическая ошибка

You need to have only one variable for your data and one for your control for your grouped Controls:

int m_RBData;
CRadio m_RBControl;

Then you need to group all ID Controls within the linked function like this:

ON_CONTROL_RANGE(BN_CLICKED,IDC_RB,IDC_RB3,OnClickRb)

You also need to add reference to String Table:

1R__C 0,1,2 in your first ID (IDC_RB).

Now your data variable, takes the values 0,1 or 2 whenever you click the first, the second or the third radio button respectively.

cmath

2525 / 1751 / 152

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

Сообщений: 3,349

1

Синтаксическая ошибка

12.08.2012, 12:39. Показов 6798. Ответов 7

Метки нет (Все метки)


Писал программу средствами win api которая рисует график кардиоиды, столкнулся со следующей проблемой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        a = sx/2;
        b = sy/2;
        MoveToEx(hdc, 0, b, NULL);
        LineTo(hdc, sx, b);
        MoveToEx(hdc, a, 0, NULL);
        LineTo(hdc, a, sy);
        MoveToEx(hdc, a, b, NULL);
        for(angle=0.0; angle<(2*M_PI); angle+=0.1)
        {
            x = a+R*(1-cos(angle))*cos(angle);
            y = b-R*(1-cos(angle))*sin(angle);
            LineTo(hdc, x, y);
        }
        EndPaint(hWnd, &ps);
        break;

Компиллятор (VC++ 2010) выдает синтаксические ошибки в строке где у меня начинается цикл for():
error C2059: синтаксическая ошибка: =
error C2143: синтаксическая ошибка: отсутствие «;» перед «)»
error C2143: синтаксическая ошибка: отсутствие «;» перед «)»
error C2143: синтаксическая ошибка: отсутствие «;» перед «{«
хотя все символы вроде правильно расставил Запускал этот же цикл в другой программе и он там работал, а в этой компиллятор ругается. Что интересно если цикл вырезать то прога нормально компилируется и запускается, а с циклом не хочет Подскажите плиз в чем проблема. Заранее благодарен.

0

Модератор

Эксперт по электронике

8756 / 6546 / 887

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

Сообщений: 22,962

12.08.2012, 15:53

2

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

Подскажите плиз в чем проблема.

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

for(angle=0.0; angle<(2*M_PI); angle+=0.1)

angle где определено??? это что?

0

2525 / 1751 / 152

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

Сообщений: 3,349

13.08.2012, 03:06

 [ТС]

3

angle — переменная, тип double, объявлена глобально. Не в ней проблема. Если бы это было так то компиллятор выдал бы мне ошибку о необъявленном идентификаторе (я не совсем новичок и уже сталкивался с разными ошибками, но такое у меня в первый раз)

0

Модератор

Эксперт по электронике

8756 / 6546 / 887

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

Сообщений: 22,962

13.08.2012, 09:14

4

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

angle — переменная, тип double, объявлена глобально.

вот именно определили локально
for(double angle=0.0; angle<(2*M_PI); angle+=0.1) )
пропадет ли ошибка???
кстати а зачем тебе глобальный угол? Все равно в цикле крутишь 0-360
второе проверь макрос M_PI
как он определен
попробуй написать 3.1415
все дело в том что весь твой набор указывает на наведенные ошибки
в строке я вижу две угрозы M_PI и angle

1

Эксперт С++

4978 / 3085 / 456

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

Сообщений: 11,164

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

13.08.2012, 09:24

5

Hydrogen, а определение HDC hdc; и PAINTSTRUCT ps; у тебя есть?

0

cmath

2525 / 1751 / 152

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

Сообщений: 3,349

13.08.2012, 10:10

 [ТС]

6

ValeryS спс. Проблема решена. Проблема в макросе M_PI. Хотя до меня все равно никак не доходит почему. Заменил на его числовое значение.
я использовал

C++
1
2
#define _USE_MATH_DEFINES
#include <cmath>

чтобы не прописывать значение математических констант типа https://www.cyberforum.ru/cgi-bin/latex.cgi?pi и экспоненты.
Раньше юзал таким же образом проблем не было (есть еще программа рисующая синусоиду).

0

Модератор

Эксперт по электронике

8756 / 6546 / 887

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

Сообщений: 22,962

13.08.2012, 10:35

7

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

Проблема в макросе M_PI. Хотя до меня все равно никак не доходит почему.

А хто его знает
с макросами много непонятность возникает
подведи мышку к M_PI правой кнопкой и «перейти к определению»
посмотри куда тебя бросит, точно ли в cmath?
может этот макрос еще где определен?

0

2525 / 1751 / 152

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

Сообщений: 3,349

13.08.2012, 11:24

 [ТС]

8

Нашел еще один вариант решения проблемы — заменить <cmath> на <math.h>: глюк моментально исчезает. Смотрел файлик <cmath> там есть строчка #include <math.h>. Т.е. получается когда подключаю <cmath> подключаю и <math.h> только косвенно, может в этом проблема?

P.S. Все равно интересно, почему получилась синтаксическая ошибка, а не сообщение о необъявленном идентификаторе?
Второе вроде логичнее…

0

IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

13.08.2012, 11:24

8

У меня есть 2 переключателя под групповым полем, и я сделал первую группу как истинную. но когда я добавляю переменную радиокнопки, в которой отображается сообщение «Не удалось вернуть новый элемент кода, возможно, синтаксическая ошибка», в чем будет причина?

2 ответа

Лучший ответ

Удалите файл Class Wizard (.clw) и файл Intellisense (.ncb) из каталога решения и повторите попытку.


2

Martin Broadhurst
22 Янв 2016 в 19:38

Вам нужно иметь только одну переменную для ваших данных и одну для вашего контроля для ваших сгруппированных Controls:

int m_RBData;
CRadio m_RBControl;

Затем вам нужно сгруппировать все элементы управления ID в связанной функции следующим образом:

ON_CONTROL_RANGE (BN_CLICKED, IDC_RB, IDC_RB3, OnClickRb)

Вам также необходимо добавить ссылку на String Table:

1R__C 0,1,2 в вашем первом идентификаторе (IDC_RB).

Теперь ваша переменная данных принимает значения 0,1 или 2 всякий раз, когда вы нажимаете первый, второй или третий переключатель соответственно.


0

Sunscreen
12 Ноя 2010 в 14:00

Есть код ниже. Компилятор говорит синтаксическая ошибка (тоже ниже). Но мне не совсем понятно, что именно не так. Создал шаблонный класс ParagraphTests, внутри него в методе FailsOnInvalidParameters пользуюсь статическим шаблон-методом Create из класса Paragraph.

Файл ParagraphTests.h:

#pragma once
#include <cassert>
#include "ConfigableTests.h"

template <typename T>
class ParagraphTests : public ConfigableTests
{
public:
    ParagraphTests(OutputConfig config);

    void FailsOnInvalidParameters(const wchar_t* const text);
};


template<typename T>
inline ParagraphTests<T>::ParagraphTests(OutputConfig config) : ConfigableTests(config)
{
}

template<typename T>
inline void ParagraphTests<T>::FailsOnInvalidParameters(const wchar_t* const text)
{
    try
    {
        /*** ВОТ ЗДЕСЬ ОШИБКА ***/
        T* paragraph = Paragraph::Create<T>(text, Config);
        delete paragraph;
    }
    catch (int e)
    {
        return;
    }
    
    assert(false && "FailsOnInvalidParameters");
}

Файл Paragraph.h (удалил ненужные для этого вопроса поля и методы):

#pragma once
#include <cstdio>
#include "OutputConfig.h"

class Paragraph
{
public:
    virtual ~Paragraph() = default;
    
public:
    /*** ВОТ ОН ***/
    template <typename T>
    static T* Create(const wchar_t* const text, OutputConfig config);

    void Init(const wchar_t* const text, OutputConfig config);
};

/*** ВОТ ОН ***/
template<typename T>
inline T* Paragraph::Create(const wchar_t* const text, OutputConfig config)
{
    T* paragraph = new T();
    paragraph->Init(text, config);
    return paragraph;
}

Возникающая ошибка:

1>CodeTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): error C3878: синтаксическая ошибка: непредвиденный маркер "catch" после "try_block"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): message : пропущено восстановление ошибки: "catch"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C2760: синтаксическая ошибка: непредвиденный элемент "идентификатор". Ожидается "выражение"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C3878: синтаксическая ошибка: непредвиденный маркер "идентификатор" после "expression"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): message : пропущено восстановление ошибки: "идентификатор"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C2760: синтаксическая ошибка: непредвиденный элемент ")". Ожидается ";"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C3878: синтаксическая ошибка: непредвиденный маркер ")" после "expression_statement"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): message : пропущено восстановление ошибки: ")"
1>Header.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSHeader.cpp(90,45): warning C4267: аргумент: преобразование из "size_t" в "const int"; возможна потеря данных
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSHeader.cpp(115,54): warning C4267: аргумент: преобразование из "size_t" в "const int"; возможна потеря данных
1>HeaderTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): error C3878: синтаксическая ошибка: непредвиденный маркер "catch" после "try_block"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): message : пропущено восстановление ошибки: "catch"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C2760: синтаксическая ошибка: непредвиденный элемент "идентификатор". Ожидается "выражение"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C3878: синтаксическая ошибка: непредвиденный маркер "идентификатор" после "expression"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): message : пропущено восстановление ошибки: "идентификатор"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C2760: синтаксическая ошибка: непредвиденный элемент ")". Ожидается ";"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C3878: синтаксическая ошибка: непредвиденный маркер ")" после "expression_statement"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): message : пропущено восстановление ошибки: ")"
1>Paragraph.cpp
1>ParagraphTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): error C3878: синтаксическая ошибка: непредвиденный маркер "catch" после "try_block"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,2): message : пропущено восстановление ошибки: "catch"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C2760: синтаксическая ошибка: непредвиденный элемент "идентификатор". Ожидается "выражение"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): error C3878: синтаксическая ошибка: непредвиденный маркер "идентификатор" после "expression"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,13): message : пропущено восстановление ошибки: "идентификатор"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C2760: синтаксическая ошибка: непредвиденный элемент ")". Ожидается ";"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): error C3878: синтаксическая ошибка: непредвиденный маркер ")" после "expression_statement"
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(29,14): message : пропущено восстановление ошибки: ")"

Здесь, как я понял, всё-таки основными являются эти ошибки:

1>CodeTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"

1>HeaderTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"

1>ParagraphTests.cpp
1>D:ProgsC++SalnikovMSUProject1Project1_VSProject1_VSParagraphTests.h(26,29): error C7510: "Create": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"

I have a simple MFC application, using Visual Studio 2019. My problem is that when I want to add a variable to any control I get the pop up message:

Failed to return new Code Element. Possibly syntax error. New Element Name test

Screenshot of error

To clarify: The problem is in the Visual C MFC Dialog Editor. Not in my code as it runs fine. I have tried all possible solutions that I found using Google. Nothing helps. The app is very simple. The only «extra» is that I am using tinyxml2.

What I found out by Google is that this is not a new problem, and the solution was to not use precompiled headers. And I am not using precompiled headers. so…

I am stuck. A long shot: Note the «Element» in the error text, and all the «elements» in tinyxml2. Some collision of symbols ??

I hint (maybe): I have got this message once before when I was using a long variable name. I shorted the name and the error was gone.
This is my second try. When the problem turned up I removed all changes since it was OK. But the problem is still there. Somthing I did has left some, not reversable, mark in the code (or database).

Вам нужно иметь только одну переменную для ваших данных и одну для вашего элемента управления для ваших сгруппированных элементов управления:

int m_RBData;
CRadio m_RBControl;

Затем вам нужно сгруппировать все элементы управления ID в связанной функции следующим образом:

ON_CONTROL_RANGE (BN_CLICKED, IDC_RB, IDC_RB3, OnClickRb)

Вам также необходимо добавить ссылку на таблицу строк:

1R__C 0,1,2 в вашем первом идентификаторе (IDC_RB).

Теперь ваша переменная данных принимает значения 0,1 или 2, когда вы нажимаете первый, второй или третий переключатель соответственно.

cmath

2525 / 1751 / 152

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

Сообщений: 3,349

1

Синтаксическая ошибка

12.08.2012, 12:39. Показов 7219. Ответов 7

Метки нет (Все метки)


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

Писал программу средствами win api которая рисует график кардиоиды, столкнулся со следующей проблемой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        a = sx/2;
        b = sy/2;
        MoveToEx(hdc, 0, b, NULL);
        LineTo(hdc, sx, b);
        MoveToEx(hdc, a, 0, NULL);
        LineTo(hdc, a, sy);
        MoveToEx(hdc, a, b, NULL);
        for(angle=0.0; angle<(2*M_PI); angle+=0.1)
        {
            x = a+R*(1-cos(angle))*cos(angle);
            y = b-R*(1-cos(angle))*sin(angle);
            LineTo(hdc, x, y);
        }
        EndPaint(hWnd, &ps);
        break;

Компиллятор (VC++ 2010) выдает синтаксические ошибки в строке где у меня начинается цикл for():
error C2059: синтаксическая ошибка: =
error C2143: синтаксическая ошибка: отсутствие «;» перед «)»
error C2143: синтаксическая ошибка: отсутствие «;» перед «)»
error C2143: синтаксическая ошибка: отсутствие «;» перед «{«
хотя все символы вроде правильно расставил Запускал этот же цикл в другой программе и он там работал, а в этой компиллятор ругается. Что интересно если цикл вырезать то прога нормально компилируется и запускается, а с циклом не хочет Подскажите плиз в чем проблема. Заранее благодарен.



0



Модератор

Эксперт по электронике

8811 / 6593 / 896

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

Сообщений: 23,188

12.08.2012, 15:53

2

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

Подскажите плиз в чем проблема.

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

for(angle=0.0; angle<(2*M_PI); angle+=0.1)

angle где определено??? это что?



0



2525 / 1751 / 152

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

Сообщений: 3,349

13.08.2012, 03:06

 [ТС]

3

angle — переменная, тип double, объявлена глобально. Не в ней проблема. Если бы это было так то компиллятор выдал бы мне ошибку о необъявленном идентификаторе (я не совсем новичок и уже сталкивался с разными ошибками, но такое у меня в первый раз)



0



Модератор

Эксперт по электронике

8811 / 6593 / 896

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

Сообщений: 23,188

13.08.2012, 09:14

4

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

angle — переменная, тип double, объявлена глобально.

вот именно определили локально
for(double angle=0.0; angle<(2*M_PI); angle+=0.1) )
пропадет ли ошибка???
кстати а зачем тебе глобальный угол? Все равно в цикле крутишь 0-360
второе проверь макрос M_PI
как он определен
попробуй написать 3.1415
все дело в том что весь твой набор указывает на наведенные ошибки
в строке я вижу две угрозы M_PI и angle



1



Эксперт С++

4982 / 3089 / 456

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

Сообщений: 11,165

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

13.08.2012, 09:24

5

Hydrogen, а определение HDC hdc; и PAINTSTRUCT ps; у тебя есть?



0



cmath

2525 / 1751 / 152

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

Сообщений: 3,349

13.08.2012, 10:10

 [ТС]

6

ValeryS спс. Проблема решена. Проблема в макросе M_PI. Хотя до меня все равно никак не доходит почему. Заменил на его числовое значение.
я использовал

C++
1
2
#define _USE_MATH_DEFINES
#include <cmath>

чтобы не прописывать значение математических констант типа https://www.cyberforum.ru/cgi-bin/latex.cgi?pi и экспоненты.
Раньше юзал таким же образом проблем не было (есть еще программа рисующая синусоиду).



0



Модератор

Эксперт по электронике

8811 / 6593 / 896

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

Сообщений: 23,188

13.08.2012, 10:35

7

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

Проблема в макросе M_PI. Хотя до меня все равно никак не доходит почему.

А хто его знает
с макросами много непонятность возникает
подведи мышку к M_PI правой кнопкой и «перейти к определению»
посмотри куда тебя бросит, точно ли в cmath?
может этот макрос еще где определен?



0



2525 / 1751 / 152

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

Сообщений: 3,349

13.08.2012, 11:24

 [ТС]

8

Нашел еще один вариант решения проблемы — заменить <cmath> на <math.h>: глюк моментально исчезает. Смотрел файлик <cmath> там есть строчка #include <math.h>. Т.е. получается когда подключаю <cmath> подключаю и <math.h> только косвенно, может в этом проблема?

P.S. Все равно интересно, почему получилась синтаксическая ошибка, а не сообщение о необъявленном идентификаторе?
Второе вроде логичнее…



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

13.08.2012, 11:24

8

Возможно, вам также будет интересно:

  • Сбой подключения сети с ошибкой 651
  • Сбой программы это счетная ошибка
  • Сбой подключения с ошибкой 868
  • Сбой программы в стиральной машине indesit как исправить ошибку
  • Сбой подключения с ошибкой 813 что это такое

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

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