******************* task.h ****************** #ifndef __TASK_H__ #define __TASK_H__ # include "SDA55XX.H" # include "RC_CODES.H" # include "CONSTANT.H" # include "inouts.h" # include "osd.h" # include "video.h" # include "tuning.h" # include "sound.h" # include "teletext.h" # include "i2crout.h" # include "timer.h" # include "service.h" # include "mains.h" extern void Red_Marktask_IR(void); extern void Menu_Marktask_IR(void); extern void GDW_OSD_MODE(void); extern void Text_Off(void); extern void Text_Marktask_IR(void); extern void TV_Marktask_IR(void); extern void MarkTaskIR (void); extern void OK_Marktask_IR(void); extern void Volume_Up_Aiwa(void); extern void Up_Down_Hiz_Control(void); extern void Volume_Up_Marktask_IR(void); extern void Volume_Down_Aiwa(void); extern void Volume_Down_Marktask_IR(void); extern void Page_Down_Marktask_IR(void); extern void Page_Down_Aiwa(void); extern void Page_Up_Marktask_IR(void); extern void Page_Up_Aiwa(void); #endif ******************mains.h******************* #ifndef __MAINS_H__ #define __MAINS_H__ # include <SDA55XX.H> # include <RC_CODES.H> # include <CONSTANT.H> # include <string.h> # include "INTRINS.H" # include "inouts.h" # include "osd.h" # include "video.h" # include "tuning.h" # include "sound.h" # include "i2crout.h" # include "timer.h" # include "task.h" # include "ints.h" .... ******************************************
It's not about double underscored "files" but rather about double-underscored macro names. The fact that you didn't run into problem with these only means that you've been lucky so far (or that you failed to notice the breakage). It doesn't matter whether they're your "personal" header files or some other programmer's: if they're not written by your compiler vendor, they may not use this kind of name, because these names are reserved to the implementor. For the sake of this forum, the implementor is neither your, nor that other person whose code you're using, but only Keil GmbH.
The Compiler offers a Preprint directive where a listing with the extension *.I is generated. This listing shows the code after the Preprocessor and should contains the function prototypes. It allows you to verify the header files that are included. If the function prototypes are not in this listing you have perhaps some #defines or other conditional preprocessor statements that make them invisible.