__line__c ++ makro

__line__c ++ makro
Preprocesorami są programy, które mają nasz kod źródłowy przed rozpoczęciem procesu kompilacji. Te preprocesory zawierają niektóre dyrektywy, takie jak #Define, #Include itp. Istnieje w sumie 4 główne typy dyrektyw preprocesor. Jednym z nich są makra. Makra zawierają kawałek kodu w programie, który otrzymuje określoną nazwę. Kiedy kompilator napotyka nazwę, kompilator zastępuje nazwę prawdziwym/rzeczywistym kodem. Dyrektywa „#Define” definiuje makro.

Macro to skrót, który oznacza jakiś kawałek kodu w języku programowania. Te makra pomagają uprościć i zmniejszyć kod, aby uniknąć redundancji i powtarzalnego kodowania. Tak, że błędy są również zmniejszone, które występują głównie z powodu powtarzanego kodowania. Główną zaletą w zakresie makr jest to, że konwertuje kod i tworzy bardziej czytelny program montażu.

Rozszerzenie makro

Makro zawiera nazwę, zestaw parametrów formalnych i organ kodu. Nazwa makro jest używana z zestawem parametrów i zastępowana przez jakiś kawałek kodu generowanego przez jego nadwozie. To tworzy makro rozszerzenie. Pozwala to programistowi na tworzenie i definiowanie pseudo operacji, pożądanych operacji oraz tych, które nie są wdrażane jako instrukcje procesora. Macro ma określoną jakość, w której automatycznie pisze program. Nazwa makro jest napisana jako słowo kluczowe w kodzie. Działa jak wywołanie tego konkretnego makra, podobnie jak wywołanie funkcji. Następnie ta nazwa jest zastąpiona innym kodem ciała makro, jak opisaliśmy powyżej. Ta wymiana wywołania przetworzoną kopią jest rozszerzeniem połączenia makro. I jest używany zarówno w C, jak i C ++.

Po zdefiniowaniu makra nie możemy go na nowo zdefiniować do innej wartości bez usunięcia pierwszej oryginalnej definicji. Ale można na nowo zdefiniować makro z tą samą definicją już zdefiniowanych makr. Dyrektywa #UNDEF jest odpowiedzialna za usunięcie definicji makra. Po usunięciu definicji możemy teraz na nowo zdefiniować makro inną wartością.

Makra w c++

Istnieją dwa typy:

  1. Makra podobne do obiektu
  2. Makra podobne do funkcji

Makra podobne do obiektu

Makra obiektowe nie biorą żadnego argumentu. Są to identyfikatory, które są zastąpione wartością. Są one najczęściej używane do reprezentowania wartości liczbowych i stałych.

#definicja PL 3.17

PL to nazwa makra, która zostanie zastąpiona wartością 3.17.

Makra podobne do funkcji

Tego rodzaju makra mogą akceptować argumenty. Te makra wyglądają jak wywołanie funkcji. Na przykład weź przykład, w którym Max to nazwa makra.

#definicja max (a, b) ((a)<(b)?(a): (b))

Makra zwykle nie generują wywołań funkcji.W C ++ preferowane są funkcje wbudowane.

Predefiniowane makra

Kompilator Microsoft C/C ++, który ma predefiniowane makra MSVC, które zależą od języka C ++, celu kompilacji i opcji kompilatora. MSVC obsługuje predefiniowane makra preprocesorowe, które są wymagane przez standardy ANSI/ISO C99. Te predefiniowane makra nie używają żadnych argumentów i nie można ich na nowo zdefiniować.

Wiele predefiniowanych makr można użyć w kodach źródłowych C/C ++. Niektóre z nich są tutaj opisane, które są najczęściej używane.

__Data__
Data kompilacji programu w pliku jest reprezentowana przez tę funkcję makro. Data jest ciągiem dla formatu roku miesiąca i jest stałą wartością. Ten typ makro jest zawsze zdefiniowany.

__Czas__
Przedstawia czas na tłumaczenie jednostki, która jest wstępnie przetwarzana. Podobnie jak do tej pory, ma określony format, w którym jest napisane godziny: minuty: sekundy, w taki sam sposób, jak czas jest zwracany.

Ten typ makro jest również zawsze definiowany.

__Plik__
To reprezentuje nazwę bieżącego pliku. Rozszerza się na dosłowny ciąg znaków. To zapewnia, że ​​ścieżka prowadząca do pliku jest wyświetlana. Jest to zawsze zdefiniowane makro.

__Linia__
Reprezentuje numer linii w formacie liczb całkowitych bieżącego źródła. To makro jest zdefiniowane jak inne, a jego wartość jest zmieniana za pomocą #line.

Teraz podkreślimy kilka przykładów funkcji makro __line__c ++.

__Linia__
Aby dowiedzieć się o działaniu tego makra, podaliśmy przykład. Po pierwsze, używana jest biblioteka dla strumienia wejściowego i wyjściowego. Następnie użyliśmy dziennika błędów funkcji, która utrzymuje dziennik błędów. Ma parametr do zaakceptowania wiersza w formie ciągu i wiadomości. Ta funkcja wyświetli numer wiersza z komunikatem przekazanym z głównego programu na makra.

#Define Log (MSG) ERRORLOG (__line__, msg)

Następnie zdefiniowaliśmy makro. To zaakceptuje ciąg linii wiadomości z głównej funkcji, która przekazała jako argument, gdy wywołanie tego makra jest wywoływane. I podobnie funkcja dziennika błędów jest wywoływana z Makro Line i komunikatem jako parametry. Plik zostanie zapisany z rozszerzeniem .C plik kodu źródłowego. Ponieważ musimy zobaczyć wyniki platformy Linux, przejdź do terminalu i zastosuj polecenia, aby skompilować i wykonać plik. Użyj kompilatora G ++ dla C++.

$ g ++ -o f f.C
$ ./F

Możesz zobaczyć, że nawet w przypadku przestrzeni numer linii jest identyfikowany za pomocą makra linii. Z tego przykładu widziałeś funkcjonalność makro __line__. Ale w następnym przykładzie wszystkie makra są wspólnie w programie. Użyliśmy „cout” do drukowania linii. Każda linia zawiera inny makro, a ta wartość jest wyświetlana. Na przykład, w przypadku daty, której użyliśmy:

STD :: Cout << ("Date :%s\n" , __Date) << std ::endl;

Teraz zobaczymy wyjście. Możesz zobaczyć, że nazwa pliku, data kompilacji, godzina kompilacji i bieżący numer linii są wyświetlane bardzo skutecznie za pomocą jednego kawałka kodu dla każdego makra.

Użycie/zalety makr

  • Mniej przestrzeni jest zajęte, ponieważ przekształca deklarację długich zmiennych w krótkie.
  • Gdy makro jest używane z nazwą, która zapewnia bieżące instrukcję znaczenie, łatwiej jest zrozumieć makro niż długie kody.
  • Makra nie są w stanie wyczyścić ani usunąć śmieci itp., przez nich samych. Zależy to od programisty i decyduje, kiedy makro jest zaprojektowane do wyjścia i wymagane do czyszczenia, aby drugi plik mógł łatwo używać makra.
  • Szybkość wykonywania programu jest zwiększona, co jest główną zaletą używania makra w kodzie.

Wniosek

„__line__c ++ makro” to artykuł napisany tak, aby rozwinąć podstawowe funkcjonalność makra poprzez opisanie typów, a także predefiniowanych makr i kolejnych ich typów. Wszystkie te funkcje są wyjaśnione za pomocą przykładu. Makra można łatwo zaimplementować i wymagają mniej czasu w kompilacji kodów. Funkcje te są zaprojektowane przez programistów, którzy chcą tworzyć innowacje i warunki za pomocą małego kodu w programie źródłowym podstawowym. W tym celu artykułu towarzyszą zastosowania makro w kodzie źródłowym i opisuje, w jaki sposób są one korzystne w niektórych aspektach.