2011-06-25 73 views
0

我试图用IF语句选择两个可能的ANSI C表达式之一。每个表达式很好地独立工作,如...通过IF语句选择结构

wb_Parameters *WeightLimits = set100Parameters(); 

,但是当他们通过IF如选择......

if (strcmp(CurrentAircraft->PhenomType,"100") == 0) 
    wb_Parameters *WeightLimits = set100Parameters(); 
else 
    wb_Parameters *WeightLimits = set300Parameters(); 

我得到错误信息“使用未声明的标识符的“WeightLimits ”“。我需要做什么才能在IF声明中进行这项工作?

回答

1

WeightLimits超出if语句后的范围。为避免这种情况,请在if之前声明它:

wb_Parameters *WeightLimits; 
if (strcmp(CurrentAircraft->PhenomType,"100") == 0) 
    WeightLimits = set100Parameters(); 
else 
    WeightLimits = set300Parameters(); 
+0

谢谢杰夫!我花了几个小时,在两分钟内帮助了我。多么好的资源。 – MonkeyBusiness

+0

如果您觉得有用,您应该接受他的回答 –

1

首先声明,然后分配合适的值:

wb_Parameters *WeightLimits = NULL; 
if (strcmp(CurrentAircraft->PhenomType,"100") == 0) 
    WeightLimits = set100Parameters(); 
else 
    WeightLimits = set300Parameters(); 

如果不首先声明它,它超出范围,它不能再被使用。

+0

为什么初始化如果接下来要做的事情是设置对象值? – pmg

+0

@pmg:http://programmers.stackexchange.com/questions/75039/why-declare-a-variable-in-one-line-and-assign-to-it-in-the-next/75040#75040 – orlp

+0

好的:程序员是习惯的生物:) – pmg