WItam
Spotkałem się z tym już wcześniej ale w plikach bibliotek AVR GCC a teraz także w opisach jakichś dyrektyw dla kompilatora. O co tu chodzi? Do czego służy dlaczego się ich używa. Teraz znalazłem to w forum EP. Poniżej treść postu w którym wyjaśniane jest zagłębianie includów. Gościu pisze w pierwszej części jak się nie robi i dlaczego a potem poprawia z użyciem IFNDEF ale już z podkreślnikami.
Rafał
zrób prosze mały teścik:
potrzeba trzy pliki: jeden.h napisał:
#include "dwa.h" #define CONST_JEDEN 0x1234
dwa.h napisał:
#include "jeden.h" #define CONST_DWA 0x1234
hello.c napisał:
#include "jeden.h" #include "dwa.h" //..... unsigned short v1 = CONST_JEDEN; unsigned short v2 = CONST_DWA;
gdy te pliki *.h opatrzysz wspomnianymi dyrektywami, podczas kompilacji po pierwszym napotkaniu danego symbolu, zostanie przyjęte, że on już jest zdefiniowany i przy drugim wczytaniu takiego pliku *.h zostanie on przetworzony inaczej (zawartość będzie pominięta) ponieważ tak każą instrukcje ifndef/endif
jeden.h napisał:
#ifndef __JEDEN_H__ #define __JEDEN_H__
#include "dwa.h" #define CONST_JEDEN 0x1234
#endif // __JEDEN_H__
dwa.h napisał:
#ifndef __DWA_H__ #define __DWA_H__
#include "jeden.h" #define CONST_DWA 0x1234
#endif // __DWA_H__
hello.c napisał:
#include "jeden.h" #include "dwa.h" //..... unsigned short v1 = CONST_JEDEN; unsigned short v2 = CONST_DWA;