C++ __FILE__ makro

C File Makro



Makra to fragmenty kodu w skrypcie o określonej nazwie. Kiedy którekolwiek z makr zostanie wykonane, kod za nimi jest wykonywany w celu wykonania określonego zadania. Tak po prostu, __FILE__ jest makrem używanym w języku C++, aby uzyskać ścieżkę do określonego pliku. Dlatego dzisiaj w tym przewodniku omówimy działanie makra C++ __FILE__.

Przykład 01:

Weźmy pierwszy przykład makra __FILE__ w C++, uruchamiając aplikację konsoli terminala. Być może używasz do tego skrótu 'Ctrl + Alt + T'. Innym sposobem otwarcia powłoki jest użycie menu Obszar aktywności, jeśli zapomniałeś klawisza skrótu. Po uruchomieniu konsoli terminala na ekranie spróbuj utworzyć nowy plik C++, aby wykonać w nim kod. Plik można utworzyć za pomocą prostego zapytania „dotykowego”, jak pokazano na załączonym obrazku poniżej. Nazwę nowo utworzonego pliku należy podać ze słowem kluczowym „touch”.







W systemie Linux Ubuntu 20.04 musi być zainstalowany jakiś edytor, aby móc go używać do kodowania i otwierania nowo utworzonych plików. Najbardziej polecanymi edytorami szeroko znanymi wśród użytkowników Linuksa są GNU Nano i edytor Vim. Poza tym edytor tekstu może być również używany w przypadku, gdy oba wcześniej wymienione edytory nie działają. Tak więc zainstalowaliśmy już edytor GNU Nano. Dlatego będziemy go używać do otwierania i edytowania pliku w celu utworzenia kodu. Użyj słowa kluczowego „nano” wraz z nazwą pliku, aby edytor działał.





Teraz nowo utworzony plik C++ macro.cc jest gotowy do kodowania w edytorze. Zacznijmy wdrażać kod C++, gdy wdrażamy ten artykuł, aby zobaczyć działanie makra __FILE__. Rozpoczęliśmy nasz kod C++ od dodania standardowego nagłówka wejścia-wyjścia na górze. W tym celu użyto słowa kluczowego „include” ze znakiem krzyżyka. Bez tego nagłówka wejście i wyjście kodu C++ nie będzie działać na konsoli po kompilacji i wykonaniu.





Metoda main() jest podstawowym filarem naszego kodu, ponieważ od niej zaczyna się wykonywanie i na niej się kończy. W ramach metody main() rzeczywista praca zostanie wykonana. W naszej metodzie main() używaliśmy kodu jednowierszowego do opisania funkcjonalności makra __FILE__. Tak więc tutaj użyto instrukcji printf, przyjmując jako argumenty dwie wartości, tj. ciąg znaków przyjmujący nazwę pliku i funkcję makra.

Makro __FILE__ służy tutaj do uzyskania bieżącej ścieżki do pliku lub jego nazwy. Podczas gdy „%S” służy do drukowania bieżącej ścieżki pliku lub jego nazwy w ciągu znaków. Musisz zapisać swój kod przed wykonaniem za pomocą skrótu „Ctrl+S”. Teraz kod jest zapisany, spróbuj wrócić do terminala powłoki za pomocą skrótu „Ctrl + X”.



Skoro mamy już za sobą kod C++ dla makra __FILE__, zacznijmy kompilację kodu C++. Do kompilacji zainstalowaliśmy już kompilator g++ do kompilacji kodu C++. Tak więc kompilator g ++ został wykorzystany w terminalu do skompilowania pliku „macro.cc”. Po kompilacji nic nie zwraca, co wskazuje, że kod C++ znajdujący się w pliku macro.cc jest semantycznie poprawny. Po kompilacji kolej na wykonanie kodu. Aby uruchomić plik z kodem, zwykle używamy prostego zapytania „./.aout”. Po uruchomieniu pliku macro.cc otrzymaliśmy w zamian nazwę pliku. Tak działa makro C++ __FILE__.

Przykład 02:

Spójrzmy na inny przykład, aby przyjrzeć się funkcjonalności makra C++ __FILE__ w systemie Ubuntu 20.04. Jak widzieliśmy, jak działa makro C++ __FILE__, gdy zostało użyte do pobrania ścieżki do pliku, w którym zostało wspomniane.

Teraz użyjemy makra C++ __FILE__, aby uzyskać ścieżkę lub nazwę pliku innego niż plik, nad którym aktualnie pracujemy. Otworzyliśmy więc ten sam plik macro.cc w edytorze GNU Nano, aby zaktualizować kod. Dodaliśmy standardowy nagłówek wejścia-wyjścia ze słowem kluczowym include i zainicjowaliśmy funkcję main() zwracanym typem integer.

W ramach metody main() pierwsza instrukcja print jest taka sama jak stara, aby uzyskać bieżącą ścieżkę do pliku, nad którym aktualnie pracujemy. Następnie użyliśmy słowa kluczowego #line z inną nazwą pliku, tj. „new.txt” w następnym kolejnym wierszu. Ma to na celu określenie pliku innego niż bieżący plik, dla którego otrzymamy jego nazwę lub ścieżkę. Następna instrukcja printf została wykorzystana do wydrukowania ścieżki do pliku „new.txt” za pomocą makra C++ __FILE__. Zapisz nowo zaktualizowany kod, aby uniknąć niedogodności w czasie kompilacji. Aby to zrobić, użyj „Ctrl + S”.

Po zapisaniu zaktualizowanego pliku zamknij go za pomocą „Ctrl + X” na klawiaturze. Teraz jesteśmy z powrotem na ekranie powłoki.

Skompilujmy zaktualizowany plik. Użyj do tego kompilatora g++ z nazwą pliku macro.cc. Po udanej kompilacji uruchom kod za pomocą polecenia „./a.out” w konsoli. Dane wyjściowe pokazują najpierw ścieżkę do bieżącego pliku, a następnie ścieżkę do innego pliku, „new.txt” został wyświetlony na ekranie powłoki. Zobacz, jak łatwo jest użyć makra __FILE__ do wyświetlenia ścieżki pliku w powłoce.

Przykład 03:

Rzućmy okiem na makro __LINE__ wraz z makrem __FILE__ w C++. Makro __LINE__ wyświetli numer wiersza pliku, w którym makro zostało użyte. Otwórz więc ten sam plik i zaktualizuj obie instrukcje printf. Przed makrem C++ __LINE__ dodaliśmy makro __LINE__ C++. To __LINE__makro pobiera numer wiersza bieżącego pliku, w którym __FILE__ występuje na pierwszym miejscu. Podczas gdy następne makro __LINE__ otrzyma numer pierwszej linii drugiego pliku, ponieważ już wspomnieliśmy o numerze linii z nazwą pliku w kodzie.

Po zapisaniu i wyjściu z pliku wróciliśmy do terminala powłoki. Używamy tego samego polecenia g++ do skompilowania kodu pliku C++ macro.cc. Pomyślna kompilacja prowadzi do wykonania polecenia. Teraz do tego służy polecenie „./a.out”. Wykonanie mówi nam, że pierwszy plik, tj. bieżący plik w linii 3, podczas gdy makro __FILE__ znajduje się w pierwszej linii drugiego pliku wymienionego w kodzie.

Wniosek:

Ten artykuł zawiera definicję makr i omawia użycie makra C++ __FILE__ w systemie Ubuntu 20.04. Makro C++ __LINE__ zostało również omówione w kilku przykładach, aby bardziej zilustrować działanie makra C++ __FILE__. Podsumowując, mamy wielką nadzieję, że ten artykuł pomoże Ci w najlepszym wykorzystaniu makra C++ __FILE__.