如何解决THREADENTRY32结构的数组作为函数参数导致C2061
| 我想向我的调试器添加一个方法,该方法将THREADENTRY32数组与当前正在调试的进程的所有线程一起填充。为此,我想使用方法“ EnumerateThreads”,该方法传递一个THREADENTRY32指针,该函数应填写该指针。 但是,我在使用THREADENTRY32指针作为函数参数时遇到了麻烦。 每当我在头文件中声明这样的函数时,我都会收到C2061错误(\“语法错误:标识符\'THREADENTRY32 \'\”):void EnumerateThreads(THREADENTRY32 *threadArray);
如果我正确阅读,头文件已经包含定义THREADENTRY32结构的文件。
使用自定义结构并将其传递给函数可以正常工作:
结构测试
{
int bla;
DWORD boo;
};
[...]
无效的EnumerateThreads(Test * test);
我曾经使用过int- / char- / float- / etc。数组,但是我对结构数组没有任何经验。
我只是想知道为什么它不能与我自己的结构一起使用,而不能与THREADENTRY32一起使用。
解决方法
尝试使用:
void EnumerateThreads(struct THREADENTRY32 *threadArray);
这将内联向前声明该结构,但是,无论您访问该结构的成员还是使用3运算符,都需要ѭ2need中的完整定义。
或者,您需要在原型及其用法的同一转换单元(但在前面)中声明结构(通过包含Tlhelp32.h
),或提供向前声明以供编译器通过struct THREADENTRY32;
绑定到
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。