Hi all, I've a file named FONT.H where are located some text fonts in code. They are defined and initialized like this:
code U8 au8FontSystem5x8[]= { 0x00,0x00,0x00,0x00,0x00, /* Espace 0x20 */ 0x00,0x00,0x4f,0x00,0x00, /* ! */ ... ... }
typedef struct FONT_DEF { U8 u8Width; /* Character width for storage */ U8 u8Height; /* Character height for storage */ U8 *au8FontTable; /* Font table start address in memory */ } FONT_DEF; struct FONT_DEF *pptr; extern struct FONT_DEF code Font_System5x8 = {5, 8, au8FontSystem5x8}; extern struct FONT_DEF code Font_System7x8 = {7, 8, au8FontSystem7x8};
GLCD_Printf("Hello world", &FontSystem5x8);
***ÿERROR 202 IN LINE 35 OF GLCD.H: 'au8FontSystem5x8': undefined identifier
extern code U8 au8FontSystem5x8[]= { 0x00,0x00,0x00,0x00,0x00, /* Espace 0x20 */ 0x00,0x00,0x4f,0x00,0x00, /* ! */ ... ... }
Extracting from my previous post
#if MAIN code u8 text_string[]{hello again}; #else extern code U8 text_string; #endif
Thanks for all these informations. I won't post any message which doesn't concern Keil tools. I'm sorry. Stephane REY
Hey, no need to apologize -- your code uses the Keil keyword code, so you see, it was relevant to Keil tools after all. But really, where to place defs vs. decls is a pretty general 'C' thing.
Well, if you really want to pursue that old trick... here's how you can do even better than that: In the header file for 'main.c', you would have this after all #includes of other files, but before any of the variables and functions:
#ifdef WE_ARE_COMPILING_MAIN_C # define DEFINE_INITIALIZED(type, name, ini) type name = ini #else # define DEFINE_INITIALIZED(type, name, ini) extern type name #endif
DEFINE_INITIALIZED(code u8, textstring[], "hello, again");
Take a look at the following knowledgebase article that addresses that very topic: http://www.keil.com/support/docs/1868.htm Jon