目录
warning: missing braces around initializer [-Wmissing-braces] 警告通常出现在数组或结构体初始化时,编译器检测到初始化列表没有用大括号明确区分每个元素的初始化值。这种警告意味着初始化列表中的元素没有被正确地用大括号包围,导致编译器无法准确解析每个元素的初始值。例如:
一、产生原因
1、数组初始化
在初始化数组时,如果直接使用一系列数值而没有用大括号将每个元素的值分开,就会触发这个警告。例如:
//错误的代码书写
const unint8 tansition_table[8][4]={0,1,0,1,
5,2,5,1,
3,4,5,6,
7,8,9,0,
6,7,8,9,
2,3,4,5,
1,3,1,4,
5,2,0,1};
//正确的代码书写
const unint8 tansition_table[8][4]={{0,1,0,1},
{5,2,5,1},
{3,4,5,6},
{7,8,9,0},
{6,7,8,9},
{2,3,4,5},
{1,3,1,4},
{5,2,0,1}
};
2、结构体初始化
在初始化结构体时,如果初始化列表中的值没有用大括号分开,也会导致这个警告。例如:
//错误的代码书写
typedef struct {
int x;
int y;
} Point;
int main() {
Point points[3] = {0, 0, 0, 1, 1, 0};
return 0;
}
//正确的代码书写
typedef struct {
int x;
int y;
} Point;
int main() {
Point points[3] = {{0, 0}, {1, 0}};
return 0;
}
二、解决方法
1、确保每个元素都被大括号包围
在初始化数组或结构体时,确保每个元素的值都被大括号包围。例如:
int a:ml-citation{ref="1" data="citationList"} = {{1}, {2}, {3}};
struct Point point = {{1,0}, {2,2}};
void (*PanelMenuFun[9][7])(STR_PANELOPERRATION *p) = {
/*0 RDY RDY */ { KeyModeFunZero, NullFuntion, NullFuntion, NullFuntion, KeyLongShiftFunZero, NullFuntion, NullFuntion },
/*1 H00 H0D */ { KeyModeFun1st, KeyUpFun1st, KeyDownFun1st, KeyShiftFun1st, KeyShiftFun1st, KeySetFun1st, KeySetFun1st },
/*2 H00.00 H0D.11 */ { KeyModeFun2nd, KeyUpFun2nd, KeyDownFun2nd, KeyShiftFun2nd, KeyShiftFun2nd, KeySetFun2nd, KeySetFun2nd },
/*3 14000 0200 */ { KeyModeFun3rd, KeyUpFun3rd, KeyDownFun3rd, KeyShiftFun3rd, KeyLongShiftFun3rd, KeySetFun3rd, KeySetFun3rd },
/*4 */ { KeyModeFun4th, KeyUpFun4th, KeyDownFun4th, KeyShiftFun4th, KeyShiftFun4th, KeySetFun4th, KeySetFun4th },
/*5 JOG */ { KeyModeFun5th, NullFuntion, NullFuntion, NullFuntion, NullFuntion, NullFuntion, NullFuntion },
/*6 */ { KeyModeFun6th, NullFuntion, NullFuntion, NullFuntion, NullFuntion, NullFuntion, KeyLongSetFun6th},
/*7 */ { KeyModeFun7th, NullFuntion, NullFuntion, NullFuntion, NullFuntion, NullFuntion, NullFuntion },
/*8 */ { NullFuntion, NullFuntion, NullFuntion, NullFuntion, NullFuntion, NullFuntion, NullFuntion }
};//
2、完整的初始化列表
如果数组或结构体的所有元素都需要初始化,确保每个元素都被大括号包围。如果部分元素不需要初始化,可以使用默认值填充剩余位置。例如:
//正确的代码书写
typedef struct {
int x;
int y;
} Point points[3] = {{0, 0}, {1, 0}};
三、案例
简单的结构体、结构体数组、数组的定义,容易一眼看穿错误在哪里。复杂一点的定义,不容易看穿警告的错误出现在哪里,或者模糊地知道错误的原因,但是做不到一步到位解除警告。
本实例以摘录一段复杂的结构体数组为例,旨在说明出现题目所示的警告时,如何操作才能解除警告。
1、必要的定义
仅列举与本文相关的必要的定义
/* Includes ------------------------------------------------------------------*/
/* 引用头文件 */
/* Private_Constants ---------------------------------------------------------*/
/* 宏定义 常数类*/
//下限表示显示类别 上限表示显示需要的页数
typedef struct{
Uint16 Value;
Uint16 LowerLmt; //下限
Uint16 UpperLmt; //上限
volatile UNI_FUNCODE_ATTRIBUTE Attrib; //功能码属性
}STR_FUNCODE_DEFAULT;
//功能码属性表长度
#define FUNCODEDFTLEN (H3200DFTINDEX + H32LEN)
//每组功能码长度
#define H0BLEN 100
#define H0DLEN 25
#define H2FLEN 70
#define H30LEN 10
#define H31LEN 30
#define H32LEN 24
//功能码属性表中每组首个功能码序号
#define H0000DFTINDEX 0
#define H0100DFTINDEX (H0000DFTINDEX + H00LEN)
#define H0200DFTINDEX (H0100DFTINDEX + H01LEN)
#define H0300DFTINDEX (H0200DFTINDEX + H02LEN)
#define H0400DFTINDEX (H0300DFTINDEX + H03LEN)
#define H0500DFTINDEX (H0400DFTINDEX + H04LEN)
#define H0600DFTINDEX (H0500DFTINDEX + H05LEN)
#define H0700DFTINDEX (H0600DFTINDEX + H06LEN)
#define H0800DFTINDEX (H0700DFTINDEX + H07LEN)
#define H0900DFTINDEX (H0800DFTINDEX + H08LEN)
#define H0A00DFTINDEX (H0900DFTINDEX + H09LEN)
//H0B组在辅助功能码中定义
#define H0C00DFTINDEX (H0A00DFTINDEX + H0ALEN)
//H0D组在辅助功能码中定义
#define H0E00DFTINDEX (H0C00DFTINDEX + H0CLEN)
#define H0F00DFTINDEX (H0E00DFTINDEX + H0ELEN)
#define H1000DFTINDEX (H0F00DFTINDEX + H0FLEN)
#define H1100DFTINDEX (H1000DFTINDEX + H10LEN)
#define H1200DFTINDEX (H1100DFTINDEX + H11LEN)
#define H1300DFTINDEX (H1200DFTINDEX + H12LEN)
#define H1400DFTINDEX (H1300DFTINDEX + H13LEN)
#define H1500DFTINDEX (H1400DFTINDEX + H14LEN)
#define H1600DFTINDEX (H1500DFTINDEX + H15LEN)
#define H1700DFTINDEX (H1600DFTINDEX + H16LEN)
#define H1800DFTINDEX (H1700DFTINDEX + H17LEN)
#define H1900DFTINDEX (H1800DFTINDEX + H18LEN)
#define H1A00DFTINDEX (H1900DFTINDEX + H19LEN)
#define H1B00DFTINDEX (H1A00DFTINDEX + H1ALEN)
#define H1C00DFTINDEX (H1B00DFTINDEX + H1BLEN)
#define H1D00DFTINDEX (H1C00DFTINDEX + H1CLEN)
//辅助功能码
#define H0B00DFTINDEX (H1D00DFTINDEX + H1DLEN)
#define H0D00DFTINDEX (H0B00DFTINDEX + H0BLEN)
#define H2F00DFTINDEX (H0D00DFTINDEX + H0DLEN)
#define H3000DFTINDEX (H2F00DFTINDEX + H2FLEN)
#define H3100DFTINDEX (H3000DFTINDEX + H30LEN)
#define H3200DFTINDEX (H3100DFTINDEX + H31LEN)
typedef union
{
volatile Uint32 all;
volatile STR_FUNCODE_ATTRIBUTE_BIT bit;
}UNI_FUNCODE_ATTRIBUTE;
/* 结构体变量类型定义 枚举变量类型定义 */
typedef struct{ //bits description
Uint32 Writable:2; //0-1 00:RW;01:停机设定 02:显示 03:保留参数
Uint32 rsvd:1; //2 保留
Uint32 UpperLmt:1; //3 0:直接由上限限制 1:参数由上限相关功能码限制
Uint32 LowerLmt:1; //4 0:直接由下限限制 1:参数由下限相关功能码限制
Uint32 DataBits:1; //5 0:16位 1:32位
Uint32 DispBits:4; //6-9 5个数码管要显示的位数。0:显示0位,1:显示1位...5:显示5位
Uint32 DotBit:3; //10-12 0:无小数位 1:1位小数位...4:4位小数位
Uint32 Sign:1; //13 0:无符号 1:有符号
Uint32 Active:1; //14 0:立即生效 1:再次上电生效
Uint32 DataType:2; //15-16 0:非数字数据 1:十进制数据 2:十六进制数据
Uint32 DataIndex:1; //17 0:32位数据低十六位或16位数据 1:32位数据高十六位
Uint32 OEMProtect:1; //18 0:不用保护 1:厂家保护
Uint32 PanelAttrib:2; //19-20 0: (PANEL_UNCHANGE)面板显示但不可更改
Uint32 CommSaveEn:1; //21 0: 写时存Eeprom 1:写时不存Eeprom
Uint32 CommReadEn:1; //22 0: 读时返回真实值 1:读时返回0
Uint32 Rsvd:9; //23-31 Rsvd10
}STR_FUNCODE_ATTRIBUTE_BIT;
2、引起警告的错误代码书写
仅列举与本文相关的,错误书写的代码:
本例定义了一个结构体数组FunCodeDeft[],共有60个成员。程序员按如下穷举所有成员的方法初始化该结构体数组。通过STM32CubeIDE编译后出现了本文讨论的警告。
//功能码属性表(包含辅助功能码)
const STR_FUNCODE_DEFAULT FunCodeDeft[FUNCODEDFTLEN] = {
/*默认属性:ANY_WRT| YNUM_TYP| DRCT_LMTL| DRCT_LMTH| ONE_WORD| ZERO_DOT| UN_SIGN| INST_ACT| LOW_WORD|UN_OEMPROTECT*/
/*注释 默认值 下限 上限 属性*/
#if NONSTANDARD_PROJECT == IS600P
/*H00_00*/ 6, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT,
#else
/*H00_00*/ 14000, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT,
#endif
/*H00_01*/ 0, 0, 65535, RSVD_WRT,
/*H00_02*/ 0, 0, 65535, DISP_WRT| HNUM_TYP| DISP_5| TWO_WORD| TWO_DOT,
/*H00_03*/ 0, 0, 65535, DISP_WRT| HNUM_TYP| DISP_5| TWO_WORD| TWO_DOT| HIGH_WORD,
/*H00_04*/ 0, 0, 65535, DISP_WRT| DISP_5| ONE_DOT,
/*H00_05*/ 0, 0, 65535, DISP_WRT| DISP_5,
/*H00_06*/ 0, 0, 65535, DISP_WRT| HNUM_TYP| DISP_5| TWO_WORD| TWO_DOT,
/*H00_07*/ 0, 0, 65535, DISP_WRT| HNUM_TYP| DISP_5| TWO_WORD| TWO_DOT| HIGH_WORD,
/*H00_08*/ 0, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT,
/*H00_09*/ 0, 0, 65535, POSD_WRT| DISP_1| NEXT_ACT| OEMPROTECT,
#if NONSTANDARD_PROJECT == LINEARMOT //功率单位为W
/*H00_10*/ 39, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT|OEMPROTECT,
/*H00_11*/ 230, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_12*/ 375, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_13*/ 690, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_14*/ 1900, 0, 65535, POSD_WRT| DISP_4| NEXT_ACT|OEMPROTECT,
/*H00_15*/ 1900, 0, 65535, POSD_WRT| DISP_4| NEXT_ACT|OEMPROTECT,
/*H00_16*/ 290, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT| OEMPROTECT,
/*H00_17*/ 1, 0, 65535, POSD_WRT| DISP_3| NEXT_ACT|OEMPROTECT,
/*H00_18*/ 4000, 0, 65535, POSD_WRT| DISP_5| THREE_DOT| NEXT_ACT|OEMPROTECT,
/*H00_19*/ 100, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
#else
/*H00_10*/ 75, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_11*/ 470, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_12*/ 239, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_13*/ 716, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_14*/ 3000, 0, 65535, POSD_WRT| DISP_4| NEXT_ACT|OEMPROTECT,
/*H00_15*/ 6000, 0, 65535, POSD_WRT| DISP_4| NEXT_ACT|OEMPROTECT,
/*H00_16*/ 130, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_17*/ 4, 0, 65535, POSD_WRT| DISP_3| NEXT_ACT|OEMPROTECT,
/*H00_18*/ 500, 0, 65535, POSD_WRT| DISP_5| THREE_DOT| NEXT_ACT|OEMPROTECT,
/*H00_19*/ 327, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
#endif
#if NONSTANDARD_PROJECT == LINEARMOT
/*H00_20*/ 100, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_21*/ 6700, 0, 65535, POSD_WRT| DISP_5|THREE_DOT| NEXT_ACT|OEMPROTECT,
/*H00_22*/ 1650, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_23*/ 25, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_24*/ 600, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
#else
/*H00_20*/ 387, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_21*/ 3330, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_22*/ 51, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_23*/ 654, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
/*H00_24*/ 24, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT,
#endif
/*H00_25*/ 0, 0, 65535, RSVD_WRT,
/*H00_26*/ 0, 0, 65535, RSVD_WRT,
/*H00_27*/ 0, 0, 65535, RSVD_WRT,
/*H00_28*/ 0, 0, 65535, POSD_WRT|DISP_11| TWO_WORD| NEXT_ACT| OEMPROTECT,
/*H00_29*/ 0, 0, 65535, POSD_WRT|DISP_11| TWO_WORD| NEXT_ACT| OEMPROTECT | HIGH_WORD,
#if NONSTANDARD_PROJECT == IS600P
/*H00_30*/ 0x01, 0, 65535, POSD_WRT|HNUM_TYP| DISP_3| NEXT_ACT|OEMPROTECT,
#elif NONSTANDARD_PROJECT == LINEARMOT
/*H00_30*/ 0x30, 0, 65535, POSD_WRT|HNUM_TYP| DISP_3| NEXT_ACT|OEMPROTECT,
#els
/*H00_30*/ 0x13, 0, 65535, POSD_WRT|HNUM_TYP| DISP_3| NEXT_ACT|OEMPROTECT,
#endif
#if NONSTANDARD_PROJECT == IS600P
/*H00_31*/ 2500, 0, 65535, POSD_WRT|TWO_WORD| DISP_10| NEXT_ACT| OEMPROTECT,
/*H00_32*/ 0, 0, 65535, POSD_WRT|TWO_WORD| DISP_10| NEXT_ACT| HIGH_WORD| OEMPROTECT,
#elif NONSTANDARD_PROJECT == LINEARMOT
/*H00_31*/ 16, 0, 65535, POSD_WRT| DISP_4|NEXT_ACT| OEMPROTECT,
/*H00_32*/ 100, 0, 65535, POSD_WRT| DISP_4|NEXT_ACT| TWO_DOT | OEMPROTECT,
#else
/*H00_31*/ 0, 0, 65535, POSD_WRT|TWO_WORD| DISP_10| NEXT_ACT| OEMPROTECT,
/*H00_32*/ 0x10, 0, 65535, POSD_WRT|TWO_WORD| DISP_10| NEXT_ACT| HIGH_WORD| OEMPROTECT,
#endif
/*H00_33*/ 1800, 0, 3600, POSD_WRT| DISP_4| ONE_DOT| NEXT_ACT| OEMPROTECT,
/*H00_34*/ 1800, 0, 3600, POSD_WRT| DISP_4| ONE_DOT| NEXT_ACT| OEMPROTECT,
/*H00_35*/ 0, 0, 65535, POSD_WRT| DISP_5,
/*H00_36*/ 2, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT,
/*H00_37*/ 0, 0, 65535, POSD_WRT|HNUM_TYP| DISP_2,
/*H00_38*/ 0, 0, 65535, RSVD_WRT,
/*H00_39*/ 0, 0, 65535, RSVD_WRT,
/*H00_40*/ 0, 0, 65535, RSVD_WRT,
/*H00_41*/ 0, 0, 65535, RSVD_WRT,
/*H00_42*/ 0, 0, 65535, RSVD_WRT,
/*H00_43*/ 0, 0, 65535, RSVD_WRT,
/*H00_44*/ 0, 0, 65535, RSVD_WRT,
/*H00_45*/ 0, 0, 65535, RSVD_WRT,
/*H00_46*/ 1, 0, 65535, RSVD_WRT,
/*H00_47*/ 0, 0, 65535, RSVD_WRT,
/*H00_48*/ 0, 0, 65535, RSVD_WRT,
/*H00_49*/ 0, 0, 65535, RSVD_WRT,
/*H00_50*/ 0, 0, 65535, RSVD_WRT,
/*H00_51*/ 0, 0, 65535, RSVD_WRT,
/*H00_52*/ 0, 0, 65535, RSVD_WRT,
/*H00_53*/ 0, 0, 65535, RSVD_WRT,
/*H00_54*/ 0, 0, 65535, RSVD_WRT,
/*H00_55*/ 0, 0, 65535, RSVD_WRT,
/*H00_56*/ 0, 0, 65535, RSVD_WRT,
/*H00_57*/ 0, 0, 65535, RSVD_WRT,
/*H00_58*/ 0, 0, 65535, RSVD_WRT,
/*H00_59*/ 0x0A5C, 0, 65535, RSVD_WRT,
};
3、解除警告的正确代码书写
结构体数组FunCodeDeft[]的数据类型结构体STR_FUNCODE_DEFAULT,其中,结构体STR_FUNCODE_DEFAULT由4个成员组成,这4个成员包含3个Uint16整型数据和1个联合体数据。FunCodeDeft[]是一个复杂的结构体数组。
结构体数组FunCodeDeft[]共包含60个实例,可以采用穷举的方法进行初始化,但每个实例必须用{}括起来,{}之间用,分隔,{}内各成员之间也有,分隔。
本例中,每个实例中的第4个成员是联合体数据类型,最好用{}括起来,在本例中可以省略{}。不影响编译器的结果。在不同的IDE版本下结果不一样,如果显示警告,把这个联合体成员括起来就没是了。
//功能码属性表(包含辅助功能码)
const STR_FUNCODE_DEFAULT FunCodeDeft[FUNCODEDFTLEN] = {
/*默认属性:ANY_WRT| YNUM_TYP| DRCT_LMTL| DRCT_LMTH| ONE_WORD| ZERO_DOT| UN_SIGN| INST_ACT| LOW_WORD|UN_OEMPROTECT*/
/*注释 默认值 下限 上限 属性*/
#if NONSTANDARD_PROJECT == IS600P
/*H00_00*/ {6, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT},
#else
/*H00_00*/ {14000, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT},
#endif
/*H00_01*/ {0, 0, 65535, RSVD_WRT},
/*H00_02*/ {0, 0, 65535, DISP_WRT| HNUM_TYP| DISP_5| TWO_WORD| TWO_DOT},
/*H00_03*/ {0, 0, 65535, DISP_WRT| HNUM_TYP| DISP_5| TWO_WORD| TWO_DOT| HIGH_WORD},
/*H00_04*/ {0, 0, 65535, DISP_WRT| DISP_5| ONE_DOT},
/*H00_05*/ {0, 0, 65535, DISP_WRT| DISP_5},
/*H00_06*/ {0, 0, 65535, DISP_WRT| HNUM_TYP| DISP_5| TWO_WORD| TWO_DOT},
/*H00_07*/ {0, 0, 65535, DISP_WRT| HNUM_TYP| DISP_5| TWO_WORD| TWO_DOT| HIGH_WORD},
/*H00_08*/ {0, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT},
/*H00_09*/ {0, 0, 65535, POSD_WRT| DISP_1| NEXT_ACT| OEMPROTECT},
#if NONSTANDARD_PROJECT == LINEARMOT //功率单位为W
/*H00_10*/ {39, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT|OEMPROTECT},
/*H00_11*/ {230, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_12*/ {375, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_13*/ {690, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_14*/ {1900, 0, 65535, POSD_WRT| DISP_4| NEXT_ACT|OEMPROTECT},
/*H00_15*/ {1900, 0, 65535, POSD_WRT| DISP_4| NEXT_ACT|OEMPROTECT},
/*H00_16*/ {290, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT| OEMPROTECT},
/*H00_17*/ {1, 0, 65535, POSD_WRT| DISP_3| NEXT_ACT|OEMPROTECT},
/*H00_18*/ {4000, 0, 65535, POSD_WRT| DISP_5| THREE_DOT| NEXT_ACT|OEMPROTECT},
/*H00_19*/ {100, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
#else
/*H00_10*/ {75, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_11*/ {470, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_12*/ {239, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_13*/ {716, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_14*/ {3000, 0, 65535, POSD_WRT| DISP_4| NEXT_ACT|OEMPROTECT},
/*H00_15*/ {6000, 0, 65535, POSD_WRT| DISP_4| NEXT_ACT|OEMPROTECT},
/*H00_16*/ {130, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_17*/ {4, 0, 65535, POSD_WRT| DISP_3| NEXT_ACT|OEMPROTECT},
/*H00_18*/ {500, 0, 65535, POSD_WRT| DISP_5| THREE_DOT| NEXT_ACT|OEMPROTECT},
/*H00_19*/ {327, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
#endif
#if NONSTANDARD_PROJECT == LINEARMOT
/*H00_20*/ {100, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_21*/ {6700, 0, 65535, POSD_WRT| DISP_5|THREE_DOT| NEXT_ACT|OEMPROTECT},
/*H00_22*/ {1650, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_23*/ {25, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_24*/ {600, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
#else
/*H00_20*/ {387, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_21*/ {3330, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_22*/ {51, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_23*/ {654, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
/*H00_24*/ {24, 0, 65535, POSD_WRT| DISP_5| TWO_DOT| NEXT_ACT|OEMPROTECT},
#endif
/*H00_25*/ {0, 0, 65535, RSVD_WRT},
/*H00_26*/ {0, 0, 65535, RSVD_WRT},
/*H00_27*/ {0, 0, 65535, RSVD_WRT},
/*H00_28*/ {0, 0, 65535, POSD_WRT|DISP_11| TWO_WORD| NEXT_ACT| OEMPROTECT},
/*H00_29*/ {0, 0, 65535, POSD_WRT|DISP_11| TWO_WORD| NEXT_ACT| OEMPROTECT | HIGH_WORD},
#if NONSTANDARD_PROJECT == IS600P
/*H00_30*/ {0x01, 0, 65535, POSD_WRT|HNUM_TYP| DISP_3| NEXT_ACT|OEMPROTECT},
#elif NONSTANDARD_PROJECT == LINEARMOT
/*H00_30*/ {0x30, 0, 65535, POSD_WRT|HNUM_TYP| DISP_3| NEXT_ACT|OEMPROTECT},
#els
/*H00_30*/ {0x13, 0, 65535, POSD_WRT|HNUM_TYP| DISP_3| NEXT_ACT|OEMPROTECT},
#endif
#if NONSTANDARD_PROJECT == IS600P
/*H00_31*/ {2500, 0, 65535, POSD_WRT|TWO_WORD| DISP_10| NEXT_ACT| OEMPROTECT},
/*H00_32*/ {0, 0, 65535, POSD_WRT|TWO_WORD| DISP_10| NEXT_ACT| HIGH_WORD| OEMPROTECT},
#elif NONSTANDARD_PROJECT == LINEARMOT
/*H00_31*/ {16, 0, 65535, POSD_WRT| DISP_4|NEXT_ACT| OEMPROTECT},
/*H00_32*/ {100, 0, 65535, POSD_WRT| DISP_4|NEXT_ACT| TWO_DOT | OEMPROTECT},
#else
/*H00_31*/ {0, 0, 65535, POSD_WRT|TWO_WORD| DISP_10| NEXT_ACT| OEMPROTECT},
/*H00_32*/ {0x10, 0, 65535, POSD_WRT|TWO_WORD| DISP_10| NEXT_ACT| HIGH_WORD| OEMPROTECT},
#endif
/*H00_33*/ {1800, 0, 3600, POSD_WRT| DISP_4| ONE_DOT| NEXT_ACT| OEMPROTECT},
/*H00_34*/ {1800, 0, 3600, POSD_WRT| DISP_4| ONE_DOT| NEXT_ACT| OEMPROTECT},
/*H00_35*/ {0, 0, 65535, POSD_WRT| DISP_5},
/*H00_36*/ {2, 0, 65535, POSD_WRT| DISP_5| NEXT_ACT},
/*H00_37*/ {0, 0, 65535, POSD_WRT|HNUM_TYP| DISP_2},
/*H00_38*/ {0, 0, 65535, RSVD_WRT},
/*H00_39*/ {0, 0, 65535, RSVD_WRT},
/*H00_40*/ {0, 0, 65535, RSVD_WRT},
/*H00_41*/ {0, 0, 65535, RSVD_WRT},
/*H00_42*/ {0, 0, 65535, RSVD_WRT},
/*H00_43*/ {0, 0, 65535, RSVD_WRT},
/*H00_44*/ {0, 0, 65535, RSVD_WRT},
/*H00_45*/ {0, 0, 65535, RSVD_WRT},
/*H00_46*/ {1, 0, 65535, RSVD_WRT},
/*H00_47*/ {0, 0, 65535, RSVD_WRT},
/*H00_48*/ {0, 0, 65535, RSVD_WRT},
/*H00_49*/ {0, 0, 65535, RSVD_WRT},
/*H00_50*/ {0, 0, 65535, RSVD_WRT},
/*H00_51*/ {0, 0, 65535, RSVD_WRT},
/*H00_52*/ {0, 0, 65535, RSVD_WRT},
/*H00_53*/ {0, 0, 65535, RSVD_WRT},
/*H00_54*/ {0, 0, 65535, RSVD_WRT},
/*H00_55*/ {0, 0, 65535, RSVD_WRT},
/*H00_56*/ {0, 0, 65535, RSVD_WRT},
/*H00_57*/ {0, 0, 65535, RSVD_WRT},
/*H00_58*/ {0, 0, 65535, RSVD_WRT},
/*H00_59*/ {0x0A5C, 0, 65535, RSVD_WRT},
};