2011-05-31 171 views
0

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

但是,我无法使用THREADENTRY32指针作为函数参数。

每次我在我的头文件中声明这样的功能,收到C2061错误(“语法错误:标识符‘THREADENTRY32’”):

void EnumerateThreads(THREADENTRY32 *threadArray); 

头文件包括已经限定THREADENTRY32结构如果我正确地阅读。

使用自定义结构,并把它传递给函数没有任何问题的工作:

结构测试 { INT喇嘛; DWORD boo; }; [...] void EnumerateThreads(Test * test);

我曾经用int-/char-/float-/etc。数组,但我没有任何结构数组的经验。 我只是想知道为什么它可以与我自己的结构一起工作,但不能与THREADENTRY32一起工作。

回答

1

尝试使用:

void EnumerateThreads(struct THREADENTRY32 *threadArray); 

这将内联向前声明结构,但是,你从任何你访问结构的成员或使用sizeof操作Tlhelp32.h需要完整的定义。

替代地需要声明的结构(通过包括Tlhelp32.h)在相同的翻译单元(但前述)的原的和它的用途,或提供一个前向声明为编译器结合到经由struct THREADENTRY32;