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.
0
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.