Как получить имя исполняемого файла на C ++?

Когда компилятор компилирует код, он выдает исполняемый файл. Я хочу получить имя этого исполняемого файла при его запуске. Единственная проблема заключается в том, что везде, где я ищу, у меня есть способы получить только весь путь к исполняемому файлу.

Если у меня есть исполняемый файл с именем app.exe , Я хочу вывести его в консоль. Люди в сети говорят использовать GetModuleFileName , GetModuleBaseName и argv [0] , но все они дают мне полный путь к .exe, например C: Users Lone-PC Desktop app.exe , а не только app.exe в одиночку.

Я не хочу использовать какие-либо библиотеки, и все это упаковано в консольное приложение для Windows-машины.


Я нашел то, что хочу, благодаря пользователю HTNW. Мне нужно обработать каталог с помощью упомянутых методов, таких как argv [0] .

Итак, я посмотрел он заимствовал код и создал функцию, которая будет возвращать имя файла в виде строки.

Вот код, который решил мою проблему

   строка getFileName (строка путь) {строка имя_файла = путь;  const size_t last_slash_idx = filename.find_last_of ("\/");  если (std :: string :: npos! = last_slash_idx) {filename.erase (0, last_slash_idx + 1);  } const size_t period_idx = имя_файла.rfind ('.');  return filename;}  


Назовите исполняемый файл c

Я знаю, что это кажется глупым вопросом, но как назвать исполняемый файл при использовании таких флагов, как -Wall и -pedantic в c ?

У меня есть файл с именем test.c и еще один с именем function.c, где я написал функции, которые мне нужны для моей программы test.c . Я использую эту команду для компиляции: gcc -Wall -pedantic test.c

Где я должен указать имя исполняемого файла? Я пробовал все места, но, похоже, это не работает. Моему компилятору чего-то не хватает или чего?


Вам нужно использовать -o , например, этот

  gcc -Wall -pedantic -o MY_EXECUTABLE_NAME test.c # ^ здесь (параметр имени выходного файла)  

Знаете, вы всегда можете выполнить gcc --help

  Использование: файл gcc [options] ... Параметры: -  pass-exit-codes Выйти с наивысшим кодом ошибки из фазы --help Показать эту информацию --target-help Показать параметры командной строки для конкретной цели --help = {common | optimizers | params | target | warnings | [^] {connected  | отдельные | недокументированные}} [, ... ] Отображение определенных типов параметров командной строки (используйте '-v --help' для отображения параметров командной строки подпроцессов) --version Отображение информации о версии компилятора -dumpspecs Отображение всех встроенных строк спецификаций -dumpversion Отображение версии  компилятор -dumpmachine Показать целевой процессор компилятора -print-search-dirs Показать каталоги в пути поиска компилятора -print-libgcc-file-name Показать имя сопутствующей библиотеки компилятора -print-file-name =  Показать  полный путь к библиотеке  -print-prog-name =  Показать полный путь к компоненту компилятора  -print-multiarch Показать нормализованный триплет GNU цели, используемый как компонент в пути к библиотеке -print-  multi-directory Отображение корневого каталога для версий libgcc -print-multi-lib Отображение соответствия между параметрами командной строки и несколькими каталогами поиска библиотек -print-multi-os-directory Отображение относительного пути к библиотекам ОС -print-sysroot Отображение  каталог целевых библиотек  ectory -print-sysroot-headers-suffix Показать суффикс sysroot, используемый для поиска заголовков -Wa,  Передать , разделенные запятыми, на ассемблер -Wp,  Передать , разделенные запятыми, на  препроцессор -Wl,  Передать , разделенные запятыми, в компоновщик -Xassembler  Передать  ассемблеру -Xpreprocessor  Передать  препроцессору -Xlinker  Передать   на компоновщик -save-temps Не удалять промежуточные файлы -save-temps =  Не удалять промежуточные файлы -no-canonical-prefixes Не канонизировать пути при построении относительных префиксов для других компонентов gcc -pipe Использовать  каналы, а не промежуточные файлы -time Время выполнения каждого подпроцесса -specs =  Заменить встроенные спецификации содержимым  -std =  Предположим, что входные источники предназначены для  --sysroot  =  Использовать  в качестве корневого каталога для заголовков и библиотек -B  Добавить  в пути поиска компилятора -v  Отображение программ, запускаемых компилятором - ### Как -v, но параметры указаны в кавычках и команды не выполняются -E Только предварительная обработка;  не компилировать, не собирать и не связывать только -S Compile;  не собирать и не связывать -c Компилировать и собирать, но не связывать -o  Поместить вывод в  -pie Создать независимый от позиции исполняемый файл -shared Создать общую библиотеку -x  Указать язык  следующие входные файлы Допустимые языки включают: ассемблер c ++ none 'none' означает возврат к поведению по умолчанию, предполагающему язык на основе расширения файла Опции, начинающиеся с -g, -f, -m, -O, -W или --param  автоматически передаются различным подпроцессам, вызываемым gcc.  Чтобы передать этим процессам другие параметры, необходимо использовать параметры -W .. Инструкции по сообщению об ошибках см. По адресу: .  

2


gcc -o output_name -Wall -pedant file.c


U следует использовать -o перед именем файла, потому что он создает объектный файл вашего файла кода.

Оцените статью
clickpad.ru
Добавить комментарий