最近看了代码犹豫了,所以简单总结一下。 结构数组初始化问题
struct _ m _ u smart _ nametabusmart _ name tab [ ]=
{
#if USMART_USE_WRFUNS==1 //如果读写操作已启用
(void* ) read_addr,' u32read_addr ) ) u32addr )、
(void* ) write_addr、' voidwrite_addr(u32addr,u32 val )、
#endif
(void* ) delay_ms、' voidDelay_ms ) u16NMS )、
(void* ) delay_us、' voidDelay_us(u32nus )、
(void* ) LCD_Clear、' voidLCD_clear(u16color )、
(void* ) LCD_Fill、' void LCD _ fill ' u16 ysta、u16 ysta、u16 xend、u16 yend、u16 color ) ),
(void** )液晶屏_ drawline、' void液晶屏_ drawline (u16x 1、u16 y1、u16 x2、u16 y2 ),
(void* ) LCD_DrawRectangle、' voidLCD_drawrectangle(U16x1、u16 y1、u16 x2、u16 y2 ) ),
(void* ) Draw_Circle、' voiddraw_circle ) u16 y0、u16 y0、u8 r )、
(void* ) LCD_ShowNum、' voidLCD_shownum(U16x、u16 y、u32 num、u8 len、u8 size ) )、
(void* ) LCD_ShowString,' voidLCD_showstring(U16x,u16 y,u16 width,u16 height,u8 size,u8 *p ) ',
(void* ) LCD_ReadPoint、' U16LCD_readpoint(U16x,u16 y )、
(void* ) fsmc_sram_test_write,' voidfsmc _ SRAM _ test _ write (u8数据,u32 addr ),
(void* ) fsmc_sram_test_read,' U8FSMC_SRAM_test_read(U32ADDR ),
(void* ) mymalloc、' void*mymalloc(U8memx,u32 size )、
(void* ) myfree、' void my free ' u8 memx、void *ptr )、
(void* ) mf_mount、' mf_mount ) U8drv )、
(void* ) mf_open、' mf_open ) U8*path、u8 mode )、
(void** ) mf_close,' mf_close ) ) void )、
(void* ) mf_read、' U8MF_read(U16Len )、
(void* ) mf_write、' U8MF_write(U8*dat,u16 len )、
(void* ) mf_opendir、' mf_opendir ) U8*path )、
(void* ) mf_readdir、' U8MF_readdir(void )、
(void* ) mf_scan_files、' mf_scan_files ) U8*path )、
(void* ) mf_showfree、' U32MF_showfree(U8*drv )、
(void* ) mf_lseek、' U8MF_lseek(U32offset )、
(void** ) mf_tell,' u32MF_tell ) ) void )、
(void** ) mf_size,' u32MF_size ) void )、
(void* ) mf_mkdir、' U8MF_mkdir(U8*pname )、
(void* ) mf_fmkfs、' mf_fmkfs ) U8drv、u8 mode、u16 au )、
(void* ) mf_unlink、' U8MF_unlink(U8*pname )、
(void* ) mf_rename、' mf_rename ) U8*oldname、u8* newname )、
(void* ) mf_gets、' voidMF_gets(u16size )、
(void* ) mf_putc、' U8MF_putc(U8c )、
(void* ) mf_puts、' mf_puts ) U8*c )、
(;
_m_usmart_nametab的结构体如下
//函数名称列表
struct _m_usmart_nametab
{
void* func; //函数指针
常数u8 * name; //函数名称(搜索字符串) )
(;
一开始我不知道,为什么下面的参数只有两个,上面的参数确实那么多,不是一一对应吗?
其实上面的是table表,u8 table[]={};
上面的定义是结构体的排列,其成员很多。 但是,每个成员必须与结构类型匹配。 这不仅仅是定义这种结构类型的结构数组。
请看下面的例子
typedef struct _TEST_T {
int i;
char c[10];
}TEST_T;
TEST_T gst={1," 12345”} "; //可以初始化,I为1,s为字符串。
TEST_T gst={1}; //如果初始化个数少于实际个数,则只初始化前一个成员。
test _ tgst={.c=“12345”}; //有选定的初始化成员。
字面上的重叠。
GST={test_t}{122,' 1256'}; //这是赋值语句,也可以用作初始化。 它会出现在程序的任何地方。
当然,也可以使用复合字面初始化。
gst=(TEST_T ) {.i=122, c='123'};
3、结构体排列
可以用多个大括号括起来。
TEST_T gst[10]={{},{},{}}
也可以初始化其中一个元素。
TEST_T gst[10]={[2]={},[3]={}}
也可以使用复合字面的量。
TEST_T gst[10]={[2].i=0,[3].i={}}