C++ 如何将RGBQUAD作为参数传递?
作为一个学习练习,我试图将一个RGBQUAD作为参数传递给一个只会使结构成员变黑的方法。调用“black_quad”时程序崩溃。我哪里做错了C++ 如何将RGBQUAD作为参数传递?,c++,c,visual-studio,C++,C,Visual Studio,作为一个学习练习,我试图将一个RGBQUAD作为参数传递给一个只会使结构成员变黑的方法。调用“black_quad”时程序崩溃。我哪里做错了 void UpdateFields() { RGBQUAD quad; black_quad(&quad); /* snip */ } void black_quad(RGBQUAD* quad) { quad->rgbBlue = 0; quad->rgbGreen = 0; qu
void UpdateFields()
{
RGBQUAD quad;
black_quad(&quad);
/* snip */
}
void black_quad(RGBQUAD* quad)
{
quad->rgbBlue = 0;
quad->rgbGreen = 0;
quad->rgbRed = 0;
}
很难说——你的问题似乎在别处。 以下代码经过测试并可在win7 gcc 4.7中使用
#include <windows.h>
void black_quad(RGBQUAD* quad)
{
quad->rgbBlue = 0;
quad->rgbGreen = 0;
quad->rgbRed = 0;
}
void UpdateFields()
{
RGBQUAD quad;
black_quad(&quad);
}
int main()
{
UpdateFields();
}
#包括
无效黑色四元(RGBQUAD*四元)
{
四元->rgbBlue=0;
四元->rgbGreen=0;
quad->rgred=0;
}
void UpdateFields()
{
RGBQUAD;
黑色四线组(四线组和四线组);
}
int main()
{
UpdateFields();
}
请描述您知道而我们看不到的内容。崩溃是什么样子的?“我哪里出了问题?”代码中没有显示。你能提供一些上下文吗?正如上面所写的,它不应该崩溃。你是这样写的,还是简化了?例如,可能quad
实际上是通过指针传递到UpdateFields
,在运行时指针要么为NULL
,要么在某种程度上无效?好吧,当我注释掉对black\u quad的调用时,程序运行良好,当它没有注释掉时,程序将运行,并崩溃,就像缓冲区溢出一样,windows错误报告窗口弹出..调试时会发生什么?