THREADENTRY32结构的数组作为函数参数导致C2061
Array of THREADENTRY32 struct as function parameter causes C2061
我想向调试器添加一个方法,该方法用当前正在调试的进程的所有线程填充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;
为编译器提供前向声明
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 当传递vector作为参数时,错误C2061
- THREADENTRY32结构的数组作为函数参数导致C2061