С++ __FILE__ макрос

S File Makros



Макросы — это часть кода в каком-то скрипте, имеющая определенное имя. Когда любой из макросов выполняется, код, стоящий за ними, выполняется для выполнения определенной задачи. Точно так же __FILE__ — это макрос, используемый в языке C++ для получения пути к определенному файлу. Итак, сегодня в этом руководстве мы обсудим работу макроса C++ __FILE__.

Пример 01:

Давайте возьмем первый пример макроса __FILE__ в C++, запустив консольное приложение терминала. Возможно, для этого вы используете сочетание клавиш «Ctrl+Alt+T». Другой способ открыть оболочку — использовать область меню «Активность», если вы забыли клавишу быстрого доступа. После того, как консоль терминала запустится на вашем экране, попробуйте создать новый файл c++, чтобы выполнить в нем код. Файл можно создать с помощью простого «сенсорного» запроса, как показано на прикрепленном изображении ниже. Имя вновь созданного файла должно быть указано с ключевым словом «touch».







В вашей системе Ubuntu 20.04 Linux должен быть установлен какой-либо редактор, чтобы использовать его для кодирования и открытия вновь созданных файлов. Наиболее рекомендуемыми редакторами, широко известными среди пользователей Linux, являются редактор GNU Nano и Vim. Кроме того, текстовый редактор также можно использовать в случае, если оба ранее упомянутых редактора не работают. Итак, мы уже установили редактор GNU Nano. Таким образом, мы будем использовать его для открытия и редактирования файла для создания кода. Используйте ключевое слово «nano» вместе с именем файла, чтобы редактор работал.





Теперь только что созданный файл C++ macro.cc готов для написания кода в редакторе. Давайте приступим к реализации кода C++, поскольку мы реализуем эту статью, чтобы увидеть работу макроса __FILE__. Мы начали наш код C++, добавив вверху стандартный заголовок ввода-вывода. Для этого было использовано ключевое слово «include» со знаком решётки. Без этого заголовка ввод и вывод кода C++ не будут работать на консоли при компиляции и выполнении.





Метод main() является основной опорой нашего кода, так как выполнение начинается с него и заканчивается в нем. В методе main() будет выполняться фактическая работа. Мы использовали однострочный код в нашем методе main() для описания функциональности макроса __FILE__. Итак, здесь используется оператор printf, принимающий два значения в качестве аргументов, т. е. строку, принимающую имя файла и функцию макроса.

Макрос __FILE__ используется здесь для получения текущего пути к файлу или его имени. В то время как «%S» используется для вывода текущего пути к файлу или его имени в строке. Вы должны сохранить свой код перед выполнением с помощью сочетания клавиш «Ctrl+S». Теперь код сохранен, попробуйте вернуться в терминал оболочки с помощью сочетания клавиш «Ctrl+X».



Поскольку мы закончили с кодом C++ для макроса __FILE__, давайте начнем компиляцию кода C++. Для компиляции мы уже установили компилятор g++ для компиляции кода C++. Итак, компилятор g++ был использован в терминале для компиляции файла «macro.cc». При компиляции он ничего не возвращает, что указывает на то, что код C++ внутри файла macro.cc семантически корректен. После компиляции наступает черед выполнения кода. Для запуска файла кода мы обычно используем простой запрос «./.aout». Запустив файл macro.cc, мы получили в ответ имя файла. Вот как работает макрос C++ __FILE__.

Пример 02:

Давайте рассмотрим еще один пример, чтобы рассмотреть функциональность макроса C++ __FILE__ в системе Ubuntu 20.04. Как мы видели, макрос C++ __FILE__ работает, когда он используется для получения пути к файлу, в котором он упоминается.

Теперь мы будем использовать макрос C++ __FILE__, чтобы получить путь к файлу или имя файла, отличного от файла, над которым мы сейчас работаем. Итак, мы открыли тот же файл macro.cc в редакторе GNU Nano для обновления кода. Мы добавили стандартный заголовок ввода-вывода с ключевым словом include и инициализировали функцию main() с целочисленным возвращаемым типом.

В методе main() первый оператор печати такой же, как и старый, чтобы получить текущий путь к файлу, над которым мы сейчас работаем. После этого мы использовали ключевое слово #line с другим именем файла, то есть «new.txt» в следующей строке подряд. Это нужно для указания файла, отличного от текущего файла, для которого мы будем получать его имя или путь. Следующий оператор printf использовался для вывода пути к файлу «new.txt» с помощью макроса C++ __FILE__. Сохраните обновленный код, чтобы избежать неудобств во время компиляции. Для этого используйте «Ctrl+S».

После сохранения обновленного файла закройте его, нажав «Ctrl+X» на клавиатуре. Теперь мы вернулись на экран оболочки.

Скомпилируем обновленный файл. Для этого используйте компилятор g++ с именем файла macro.cc. После успешной компиляции запустите код командой «./a.out» в консоли. Вывод сначала показывает путь к текущему файлу, затем путь к другому файлу, «new.txt», отображается на экране оболочки. Посмотрите, как легко использовать макрос __FILE__ для отображения пути к файлу в оболочке.

Пример 03:

Давайте посмотрим на макрос __LINE__ вместе с макросом __FILE__ в C++. Макрос __LINE__ отобразит номер строки файла, в котором был использован макрос. Итак, откройте тот же файл и обновите оба оператора printf. Перед макросом C++ __LINE__ мы добавили макрос C++ __LINE__. Этот макрос __LINE__ получает номер строки текущего файла, где __FILE__ стоит первым. В то время как следующий макрос __LINE__ получит номер первой строки другого файла, потому что мы уже упоминали номер строки с именем файла в коде.

После сохранения и выхода из файла мы вернулись к терминалу оболочки. Мы используем ту же команду g++ для компиляции кода файла C++ macro.cc. Успешная компиляция приводит к выполнению команды. Теперь для этого используется команда «./a.out». Выполнение говорит нам, что первый файл, то есть текущий файл в строке 3, а макрос __FILE__ находится в первой строке другого файла, упомянутого в коде.

Вывод:

Эта статья содержит определение макросов и обсуждает использование макроса C++ __FILE__ в системе Ubuntu 20.04. Макрос C++ __LINE__ также обсуждался в некоторых примерах, чтобы лучше проиллюстрировать работу макроса C++ __FILE__. Подводя итог, мы очень надеемся, что эта статья поможет вам с C++ __FILE__macro в лучшем виде.