Code: /* ---------------------------------------------------------------------- * DECLARE your own open(), close(), addr(), and byte() routines here. * */
static int open1(), close1(), addr1(), byte1(); static int open2(), close2(), addr2(), byte2(); static int open3(), close3(), addr3(), byte3(); static int open4(), close4(), addr4(), byte4();
/* ---------------------------------------------------------------------- * ADD an entry to this table to register your * output format routines. Give your object format * a name to be specified with the -F option. * */
static int format; static struct { char *name; int (*e_open)(); int (*e_close)(); int (*e_addr)(); int (*e_byte)(); } formtab[] = { { "tdr", open1, close1, addr1, byte1 }, { "byte", open2, close2, addr2, byte2 }, { "od", open3, close3, addr3, byte3 }, { "srec2", open4, close4, addr4, byte4 }, { "srec3", open4, close4, addr4, byte4 }, { "srec4", open4, close4, addr4, byte4 } };
#define FORMTABSIZE (sizeof(formtab)/sizeof(formtab[0])) Hi,
Above the structure declared the function in structure. This sample code is picked from other sample project code. This sample project i took from net is not completed source and some of the .h and .c file is not included.
The call functions:
Code: (*formtab[format].e_open)(file,ftype,arg); (*formtab[format].e_close)(); (*formtab[format].e_addr)(a); (*formtab[format].e_byte)(b); The compiler show:-> error C267: 'function': requires ANSI-style prototype
How to declare the function? I already included initial define function prototype. I think my function prototype is wrong.
The attached file is the code. Please help me...
Thank you.
It looks like you are using function pointers: the Keil tools have serious issues with function pointers - you need to ensure that you thoroughly understand them before you continue!
Read this App Note: http://www.keil.com/appnotes/docs/apnt_129.asp
and search the Knowledgebase for "Function Pointer" before you do anything else...!