作为函数参数的THREADENTRY32结构数组导致C2061

时间:2011-05-31 16:14:41

标签: c++ arrays function parameters struct

我想在我的调试器中添加一个方法,该方法填充THREADENTRY32数组,当前正在调试该进程的所有线程。为此,我想使用方法“EnumerateThreads”,我传递一个函数应填写的THREADENTRY32指针。

但是,我在使用THREADENTRY32指针作为函数参数时遇到了麻烦。

每次我在头文件中声明这样的函数时,我收到一个C2061错误(“语法错误:标识符'THREADENTRY32'”):

void EnumerateThreads(THREADENTRY32 *threadArray);

头文件包含已经定义THREADENTRY32结构的文件,如果我正确读取的话。

使用自定义结构并将其传递给函数没有任何问题:

struct test     {         int bla;         DWORD嘘     };     [...]     void EnumerateThreads(Test * test);

我使用过int- / char- / float- / etc。数组,但我没有结构数组的经验。 我只是想知道为什么它可以使用我自己的结构,但不能使用THREADENTRY32。

1 个答案:

答案 0 :(得分:1)

尝试使用:

void EnumerateThreads(struct THREADENTRY32 *threadArray);

这将内联转发声明结构,但是,您需要Tlhelp32.h的完整定义,无论您访问结构的成员还是使用sizeof运算符。

或者你需要在原型及其用途的相同翻译单元(但前面)中声明结构(通过包含Tlhelp32.h),或者为编译器提供前向声明以绑定到via {{ 1}}