gpt4 book ai didi

c - typedef 结构错误 C2275 错误

转载 作者:太空狗 更新时间:2023-10-29 15:24:48 24 4
gpt4 key购买 nike

我有一个正在编写的程序,它是一个基本的图像绘制程序。它在 C 中。

最初我声明

typedef struct 
{
int red;
int green;
int blue;
} pixel_colour;

我有一个填充背景的功能,它接受这个,所以我喜欢使用它。

pixel_colour flood_colour = {80,50,91};
FloodImage(flood_colour);

现在,如果它是我的主程序中唯一的东西,它就可以正常工作,但是一旦我添加了一个开关/案例和我的其余代码,我就不能再使用 pixel_colour flood_colour = {80,50,91 };

取而代之的是

error C2275: 'pixel_colour' : illegal use of this type as an expression
1> c:\users\xxxx\documents\visual studio 2010\projects\xxx.c(20) : see declaration of 'pixel_colour'

主要代码在下面,在我尝试使用 pixel_colour 之前,它适用于我的所有功能,它将被设置为变量而不是 200,200,200,但即使那样也不起作用

char instring[80] = "FL 201 3 56";
int pst = FirstTwo(instring);
switch( pst )
{
case 1:
printf( "FL ");
CaseFL(instring);
pixel_colour flood_colour = {200,200,200};
FloodImage(flood_colour);
break;

case 2:
printf( "LI" );
break;

case 3:
printf( "RE" );
break;

case 4:
printf( "CH" );
break;

case 5:
printf( "FI" );
break;

case 6:
printf( "EX" );
exit(EXIT_FAILURE);
break;

default :
printf( "Something went wrong" );

break;
}

最佳答案

在 C89 中,在 MSVC 的支持下,您只能在代码块的开头声明变量。相反,您可以这样做:

case 1: 
{
// first thing in the block - variable declaration / initialization
pixel_colour flood_colour = {200,200,200};
printf( "FL ");
CaseFL(instring);
FloodImage(flood_colour);
break;
}

C99、C11 和 C++ 都允许根据需要声明变量。

关于c - typedef 结构错误 C2275 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com