makra a widoczność w jednostkach translacji

0

Hej
Jak zdefiniujesz makro w jednym pliku .c/.cpp i chciałbyś go użyć w drugim pliku .c/.cpp no to z tego co pamiętam z teorii to w tym drugim pliku to makro nie będzie widoczne, prawda? No bo widoczność makr jest tylko do pojedynczych jednostek translacji. Więc aby takie makro było widoczne w obu plikach .c/.cpp to trzeba by je zawrzeć w headerze i potem w obu plikach .c/.cpp include do tego headera.
A pytam bo aktualnie dewelopuję w pewnym projekcie i tam ta zasada nie działa. Tzn. w jednym hppku jest definicja makra a w innym który nie ma pojęcia o tym pierwszym jest użycie:
#ifdef MAKRO...
i kompilator wchodzi w tego ifdefa. I tego nie rozumiem. To nie ja dewelopowałem, tylko takie coś zastałem.
Może tam jest jakiś rząd includów w .c/.cpp, że ten pierwszy hppek jest przed tym drugim i stąd jest ta widoczność.
Ten projekt na kodzie u-bootowym jest oparty, może też w u-boocie jest inaczej.

2

C to C. Albo masz „rząd include’ów”, albo makro przekazano np. jako parametr do kompilatora, ew. ten definiuje je domyślnie. Cudów nie ma, samo się nie wzięło.

2

A może podałbyś troszkę konkretów.
Jeśli masz #include "headerZDefinicjąMakra.hpp" w *.c/*.cpp to powinno to działać, chyba że jakiś symbol zależny jest redefiniowany albo go brakuje.
Bez kodu nie jest możliwe by ci pomóc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1