4

基本的な画像描画プログラムである、私が書いているプログラムがあります。それは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;
  }
4

1 に答える 1

7

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++ ではすべて、必要に応じて変数を宣言できます。

于 2012-05-05T02:41:55.170 に答える