zasięg dyrektywy kompilatora

zasięg dyrektywy kompilatora
MR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 119
0

czy ktoś może mi powiedzieć jaki zasięg ma moja własna dyrektywa kompilatora (globalnie do całej aplikacji czy do unitu w który została ona zadeklarowana)?
Bo wydaje mi się że do jednego unitu, bo jak zadeklarowałem ją w innym unicie, to w tym który mnie interesuje jest nieustawiony i musiałem tę samą deklarację powtórzyć.

A to powoduje problem, ponieważ, jeśli w tym unicie mam deklarację, to teraz ta dyrektywa jest zawsze ustawiona
A ten jeden unit ma być używany w dwóch aplikacjach (w jednej ma być ustawiony a w drugiej nie.)

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
0

Dyrektywy są dostępne dla danego modułu, od miejsca ich deklaracji w dół, aż do końca modułu.

Aby zwiększyć ich zasięg, możesz je zadeklarować w pliku dołączanym i za pomocą dyrektywy {$INCLUDE} dołączyć plik do tych modułów, w których mają obowiązywać. Wszystko zależy od potrzeb.


W swoim projekcie korzystam właśnie z tego sposobu, aby w każdym module obowiązywał mój zestaw dyrektyw, własnych symboli oraz makr preprocesora (jeśli chodzi o Lazarusa). Ot każdy mój moduł zawiera na początku dołączenie dwóch plików — przełączniki oraz makra:

Kopiuj
unit Wnc_UnitName;

  // Global compiler switches and macros.
  {$INCLUDE Wnc_Switches.inc}
  {$INCLUDE Wnc_Macros.inc}

interface

{...}

Jeśli chcę zmienić jakąś dyrektywę lub dodać symbol to modyfikuję plik .inc i nowinki mam widoczne w całym projekcie. Możesz skorzystać z tego sposobu, aby rozwiązać swój problem.


Całkiem możliwe, że Delphi pozwala deklarować symbole o zasięgu globalnym, ale nie mam go zainstalowanego, więc nie sprawdzę. Chodzi mi o odpowiednik lazarusowego panelu Additions and Overrides — chyba Delphi ma coś takiego, o nazwie Conditional Defines.

U siebie korzystam z tego, mam zadeklarowanych kilka symboli globalnych i dostępnych dla konkretnych buildów:

screenshot-20250303191615.png

Poszukaj czegoś takiego w Delphi, w oknie ustawień projektu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.