Массив структуры THREADENTRY32 как параметр функции вызывает C2061 - PullRequest
0 голосов
/ 31 мая 2011

Я хочу добавить в мой отладчик метод, который заполняет массив THREADENTRY32 всеми потоками отлаживаемого в данный момент процесса. Для этого я хочу использовать метод «EnumerateThreads», которому я передаю указатель THREADENTRY32, который должна заполнить функция.

Однако у меня возникли проблемы с использованием указателя THREADENTRY32 в качестве параметра функции.

Каждый раз, когда я объявляю такую ​​функцию в своем заголовочном файле, я получаю сообщение об ошибке C2061 («синтаксическая ошибка: идентификатор« THREADENTRY32 »»):

void EnumerateThreads(THREADENTRY32 *threadArray);

Заголовочный файл уже содержит информацию, которая определяет структуру THREADENTRY32, если я правильно ее прочитал.

Использование пользовательской структуры и передача ее функции без проблем работает:

struct Test { Int Bla; DWORD boo; }; [...] void EnumerateThreads (Test * test);

Я работал с int- / char- / float- / etc. массивы, но у меня нет никакого опыта работы со структурными массивами. Мне просто интересно, почему это работает с моими собственными структурами, а не с THREADENTRY32.

1 Ответ

1 голос
/ 31 мая 2011

попробуйте использовать:

void EnumerateThreads(struct THREADENTRY32 *threadArray);

это будет встроено вперед, объявите структуру, однако вам нужно полное определение от Tlhelp32.h, где бы вы ни обращались к членам структуры или использовали оператор sizeof.

в качестве альтернативы вам нужно объявить структуру (включив Tlhelp32.h) в той же единице перевода (но предшествующей) прото и ее использования, или предоставить предварительное объявление для привязки компилятора черезstruct THREADENTRY32;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...