Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
2 / 2 / 0
Регистрация: 12.01.2021
Сообщений: 86

Ошибка: expected type-specifier before 'ReadThread'

25.01.2021, 18:08. Показов 2689. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу победить. Закипел. Написал функцию

Code
1
DWORD WINAPI ReadThread(LPVOID)
Она нормально компилируется.

Создаю поток:

Code
1
2
HANDLE reader;      //дескриптор потока чтения из порта
reader = new ReadThread(false);
И получаю ошибку в reader = new ReadThread(false) expected type-specifier before 'ReadThread'. Что в этом не так?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2021, 18:08
Ответы с готовыми решениями:

Ошибка expected type-specifier before 'ptr_head' при реализации стека
Третий заход. :D Как-то пока мне не везёт в C++... #include <iostream> #include <stdexcept> using namespace std; ...

Expected type-specifier
Что нужно исправить в этих классах чтоб все работало? http://************/b6z111 (ошибки) П.5.18 Правил Запрещено размещать задания и...

Шаблон класса. Ошибка `missing type specifier`
Вот код: template <int value, typename type> class Class { public: type Array; type Metod(type x); };

23
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.01.2021, 18:15
Цитата Сообщение от Shark1978 Посмотреть сообщение
И получаю ошибку в reader = new ReadThread(false) expected type-specifier before 'ReadThread'. Что в этом не так?
Собственно, всё не так. Поток создаётся при помощи функции CreateThread, а не оператора new

Добавлено через 1 минуту
Creating Threads
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12943 / 6810 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
25.01.2021, 18:19
Цитата Сообщение от Shark1978 Посмотреть сообщение
И получаю ошибку в reader = new ReadThread(false) expected type-specifier before 'ReadThread'. Что в этом не так?
Как это "что"? Что такое new <имя функции>? Что это должно делать?
0
2 / 2 / 0
Регистрация: 12.01.2021
Сообщений: 86
25.01.2021, 19:14  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Собственно, всё не так. Поток создаётся при помощи функции CreateThread, а не оператора new
Еще больше непонятно стало. Взял отсюда:

https://studfile.net/preview/1506844/page:2/
Написано

Поток записи, как и поток чтения, создаётся в функции открытия порта COMOpen().
Но в функции void COMOpen() вызовов CreateThread не оказалось, зато есть строка reader = new ReadThread(false);

Как теперь правильно? Вместо reader = new ReadThread(false); поместить:

Code
1
2
    reader = CreateThread(NULL, 0, ReadThread, NULL, 0, NULL); //создаём поток чтения, который сразу начнёт выполняться (предпоследний параметр = 0)
    writer = CreateThread(NULL, 0, WriteThread, NULL, CREATE_SUSPENDED, NULL); //создаём поток записи востановленном состоянии (предпоследний параметр = CREATE_SUSPENDED)
?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.01.2021, 19:16
Цитата Сообщение от Shark1978 Посмотреть сообщение
Но в функции void COMOpen() вызовов CreateThread не оказалось, зато есть строка reader = new ReadThread(false);
Посмотри внимательнее, там ReadThread это класс, а не функция

Добавлено через 59 секунд
Цитата Сообщение от Shark1978 Посмотреть сообщение
Как теперь правильно? Вместо reader = new ReadThread(false); поместить:
Что ты вообще пытаешься сделать?
1
2 / 2 / 0
Регистрация: 12.01.2021
Сообщений: 86
25.01.2021, 19:21  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Как это "что"? Что такое new <имя функции>? Что это должно делать?
Возможно что это ошибка. Взято отсюда:

https://studfile.net/preview/1506844/page:3/

Функция void COMOpen() предпоследняя строчка. Возможно что там должно быть:

Code
1
2
    reader = CreateThread(NULL, 0, ReadThread, NULL, 0, NULL);
writer = CreateThread(NULL, 0, WriteThread, NULL, CREATE_SUSPENDED, NULL);
Добавлено через 1 минуту
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Что ты вообще пытаешься сделать?
Я написал код на VB. Он работает, но заказчик хочет на С++. Раньше я на нем не программировал, но опыт программирования на С для контроллеров имею.

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Посмотри внимательнее, там ReadThread это класс, а не функция
Да, понял. Спасибо.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.01.2021, 19:23
Цитата Сообщение от Shark1978 Посмотреть сообщение
Я написал код на VB. Он работает, но заказчик хочет на С++. Раньше я на нем не программировал, но опыт программирования на С для контроллеров имею.
Ну и программируй так же, как на обычном Cи. В с++ так можно.

Добавлено через 1 минуту
Ты в бейсике потоки создавал?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12943 / 6810 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
25.01.2021, 19:41
Лучший ответ Сообщение было отмечено Shark1978 как решение

Решение

Цитата Сообщение от Shark1978 Посмотреть сообщение
Еще больше непонятно стало. Взял отсюда:
https://studfile.net/preview/1506844/page:2/
Там написана какая-то чушь. Скорее всего к моменту new ReadThread(false) они уже полностью переделали определение ReadThread, но в тексте об этот рассказать "забыли".
1
2 / 2 / 0
Регистрация: 12.01.2021
Сообщений: 86
25.01.2021, 20:31  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Ты в бейсике потоки создавал?
Нет, просто пользовался API функциями чтения записи порта.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.01.2021, 20:33
Цитата Сообщение от Shark1978 Посмотреть сообщение
Нет, просто пользовался API функциями чтения записи порта.
Ну так их же и используй.
1
2 / 2 / 0
Регистрация: 12.01.2021
Сообщений: 86
25.01.2021, 20:40  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Ну так их же и используй.
Есть один момент который я не знаю как организовать. Функция ReadFile опрашивалась каждые 400мс.
Для этого я VB использовал таймер. Как здесь сделать пока не знаю.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.01.2021, 20:46
Цитата Сообщение от Shark1978 Посмотреть сообщение
Есть один момент который я не знаю как организовать. Функция ReadFile опрашивалась каждые 400мс.
Для этого я VB использовал таймер. Как здесь сделать пока не знаю.
Опрашивай просто в цикле, с задержкой ::Sleep(400)
А что конкретно ты делаешь?
1
2 / 2 / 0
Регистрация: 12.01.2021
Сообщений: 86
25.01.2021, 20:55  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А что конкретно ты делаешь?
Бутлоадер на STM32L476
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.01.2021, 21:00
Цитата Сообщение от Shark1978 Посмотреть сообщение
Бутлоадер на STM32L476
Не знаю, что это такое, но раз ты сделал его на бейсике, то потоки и прочее тебе точно не нужны. Вообще, код из VB практически напрямую переносится в С/С++. Там, по-моему, никаких особенностей нет
1
2 / 2 / 0
Регистрация: 12.01.2021
Сообщений: 86
25.01.2021, 21:14  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Опрашивай просто в цикле, с задержкой ::Sleep(400)
Ознакомился. Неплохо. У меня есть WinProc где обрабатываются события. Если я туда ее поставлю, кнопки будут нажиматься через максимум 400мс. Не очень удобно получится.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.01.2021, 21:16
Цитата Сообщение от Shark1978 Посмотреть сообщение
Ознакомился. Неплохо. У меня есть WinProc где обрабатываются события. Если я туда ее поставлю, кнопки будут нажиматься через максимум 400мс. Не очень удобно получится.
Если у тебя оконное приложение, то просто запусти таймер, SetTimer, и в обработчике WM_TIMER вызови свою ReadFile
1
2 / 2 / 0
Регистрация: 12.01.2021
Сообщений: 86
25.01.2021, 21:37  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
SetTimer, и в обработчике WM_TIMER вызови свою ReadFile
UINT_PTR SetTimer(
HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);

lpTimerFunc
A pointer to the function to be notified when the time-out value elapses. For more information about the function, see TimerProc. If lpTimerFunc is NULL, the system posts a WM_TIMER message to the application queue. The hwnd member of the message's MSG structure contains the value of the hWnd parameter.
Я правильно понял что lpTimerFunc это указатель на функцию? Если он не 0, то будет вызвана эта функция всесто формирования события WM_TIMER?

Так было бы удобнее.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12943 / 6810 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
25.01.2021, 21:52
Цитата Сообщение от Shark1978 Посмотреть сообщение
Я правильно понял что lpTimerFunc это указатель на функцию? Если он не 0, то будет вызвана эта функция всесто формирования события WM_TIMER?
Все равно будет формироваться событие WM_TIMER. А уж вызовом lpTimerFunc занимается обработчик для WM_TIMER в функции окна по умолчанию.
1
2 / 2 / 0
Регистрация: 12.01.2021
Сообщений: 86
26.01.2021, 22:08  [ТС]
Подскажите, в текстовое поле

Code
1
hStat1 = CreateWindow("static", "0", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT, 10, 250, 600, 200, hWnd, 0, hInstance, NULL);
добавить текст как - то можно? Я в Интернете не могу найти как это делается. Есть только вывод SetWindowText
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.01.2021, 22:13
Цитата Сообщение от Shark1978 Посмотреть сообщение
добавить текст как - то можно?
Вместо "0" подставь нужный текст

Добавлено через 1 минуту
Цитата Сообщение от Shark1978 Посмотреть сообщение
Есть только вывод SetWindowText
SetWindowText это то, что тебе и нужно, чтобы изменить текст окна, который был передан в CreateWindow.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2021, 22:13
Помогаю со студенческими работами здесь

Ошибка C4430: missing type specifier - int assumed
Вот так простенький код #pragma once #include &quot;A.h&quot; class B { public: B(void); ~B(void); }; #pragma once

Incomplete type used in nested type specifier - Итерация по списку аргументов
Здравствуйте! Пытаюсь написать утилитарную структуру для применения шаблонной функции на списке аргументов. #include...

Ошибка "[Error] expected nested-name-specifier before 'BarrelsPair'"
#include &lt;fstream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;iomanip&gt; int main() { std::ifstream input(&quot;oil.in&quot;); ...

Ошибка "missing type specifier - int assumed" В шаблоне класса
#include&lt;iostream&gt; using namespace std; int i; template &lt;typename T&gt; class Masiv { public: Masiv(int =...

Ошибка "error C4430: missing type specifier" при работе с fstream
Добрый день. Работаю над сохранением и загрузкой файлов. Для этого использую библиотеку &lt;fstream&gt;, создаю обьект класса fstream....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru