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

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.

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": при использовании зависимого имени шаблон необходимо указать префикс "шаблон"

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

int m_RBData;
CRadio m_RBControl;

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

ON_CONTROL_RANGE (BN_CLICKED, IDC_RB, IDC_RB3, OnClickRb)

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

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

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

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).

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

  • Сбой планировщика активации лицензий sppuinotify dll код ошибки 0x80070005
  • Сбой при активации imessage произошла ошибка
  • Сбой инициализации регистрации сертификата scep ошибка 86
  • Сбой подключения ошибка 813
  • Сбой инициализации dll цп ошибка 2 будет отображаться не вся информация

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

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