RTV forum PL | NewsGroups PL

Zastosowanie podwójnego podkreślnika (__) w dyrektywach C i jego rola w unikaniu zduplikowanego kodu

Podwójny podkreślnik w C

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Zastosowanie podwójnego podkreślnika (__) w dyrektywach C i jego rola w unikaniu zduplikowanego kodu

Kacper
Guest

Wed Sep 20, 2006 8:59 am   



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;

mk
Guest

Wed Sep 20, 2006 9:25 am   



Newsuser "Kacper" wrote:
Quote:
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.

Dyrektywa kompilatora jest instrukcją skierowaną do kompilatora by
zachowywał się w jakiś szczególny sposób. Jaki? To już zależy od tego jaka
to dyrektywa. Np. dzięki dyrektywom można zmusić kompilator, by dla danego
fragmentu kodu kompilator nie generował ostrzeżeń w czasie kompilacji.

Quote:
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.

Powinienieś traktować nazwę zaczynającą się od "__" jak każdą inną nazwę, z
tym że...
Użycie podwójnego podkreślenia w takim zastosowaniu jest złą praktyką!
Identyfikatory zaczynające się od dwóch podkreśleń zarezerwowane są dla
danej implementacji kompilatora. Nie należy wprowadzać nowych nazw
zaczynających się od "__", by nie doprowadzić do kolizji nazw.

pzdr
mk

elektroda NewsGroups Forum Index - Elektronika Polska - Zastosowanie podwójnego podkreślnika (__) w dyrektywach C i jego rola w unikaniu zduplikowanego kodu

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map