簡體   English   中英

typedef struct出錯C2275錯誤

[英]error C2275 error with typedef struct

我有一個我正在編寫的程序,它是一個基本的圖像繪制程序。 它在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 ++都允許根據需要聲明變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM