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

Array of THREADENTRY32 struct as function parameter causes C2061

本文关键字:参数 C2061 函数 结构 数组 THREADENTRY32      更新时间:2023-10-16

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

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

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

void EnumerateThreads(THREADENTRY32 *threadArray);

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

使用自定义结构并将其传递给函数不会出现任何问题:

结构测试{int bla;DWORD boo;};[…]void EnumerateThreads(测试*测试);

我使用过int-/char-/float-/等。数组,但我对结构数组没有任何经验。我只是想知道为什么它能和我自己的结构一起工作,而不能和THREADENTRY32一起工作。

尝试使用:

void EnumerateThreads(struct THREADENTRY32 *threadArray);

这将内联前向声明结构,但是,无论何时访问结构的成员或使用sizeof运算符,都需要来自Tlhelp32.h的完整定义。

或者,您需要在proto及其用途的同一翻译单元(但在前面)中声明结构(通过包括Tlhelp32.h),或者通过struct THREADENTRY32; 为编译器提供前向声明