|
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 215
|
||||||
Error: 'system' was not declared in this scope24.09.2019, 11:47. Показов 10522. Ответов 68
Метки нет (Все метки)
Как я понял параметры argv[] это консольные команды которые добавляются к имени файла в командой строке.
Можно ли способом описаным у меня ниже назначить команде определенные действия при вызове программы с этой командой?
Мне нужно чтобы программа не выключалась после работы. В делфи для этого использовал read;. А как без system(pause) или каким-то другим способом оставить программу после выполнения? Если че язык С++ не знаю вобще, только изучаю и многое непонятно -_-. Добавлено через 6 минут Проблема с pause решена. Натупил по невнимательности. Там ниже кода вообще бред написан. Добавлено через 1 минуту А нет всетаки пишет: error: 'system' was not declared in this scope
0
|
||||||
| 24.09.2019, 11:47 | |
|
Ответы с готовыми решениями:
68
Не компилируется приложение: 'system' was not declared in this scope
|
|
"C with Classes"
|
||||
| 24.09.2019, 16:37 | ||||
|
Добавлено через 1 минуту Добавлено через 1 минуту
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 24.09.2019, 18:24 | ||||||
|
1. родительский процесс запускает дочерний. и здесь важно не забывать записывать путь к модулю в нулевой аргумент дочернего процесса. 2. дочерний процесс был запущен из под родительского. и здесь важно понимать: не факт, что нулевой аргумент хранит путь к модулю. и что бы не полагаться на корректность вызывающей стороны, нужно использовать специализированное апи. писать грамотно, или зависеть от прихоти "маловероятных событий". можно писать чушь. можно акцентрировать на этом внимание. дабы не ввели ЕГО в заблуждение бесы-балбесы. который гарантирует мне безопасность. а вообще аналогия не уместна. программный код либо инвариантен, либо нет. Добавлено через 22 минуты например, нужно запустить программу. казалось бы, фигня делов: CreateProcess(path2programm, params, ...);и всё, приплыли. все аргументы смещены влево. нулевой аргумент хранит не путь к модулю, а первый аргумент командной строки. в моей практике был один случай, когда один паренёк будучи ещё новичком, запустил вот так одну консольную утилиту. утилита полезла в базу данных, и слегка набедокурила.
1
|
||||||
|
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 215
|
||||||
| 25.09.2019, 02:34 [ТС] | ||||||
|
Ну вот у меня работает только если
Получается в первой строке массива уже чтото есть. Только с начиная с 1. Все что хотел узнать узнал. Всем спасибо ^^.
0
|
||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
|
||||||||
| 25.09.2019, 10:44 | ||||||||
|
И даже так - это актуально только для многопоточных программ, даже прогопроцессных, что совсем редкость. Не по теме:
Так и тут: сначала надо изучить синтаксис и конструкции языка, и только потом переходить к тонкостям и исключениям. Тем более, что именно та область, в которой подобная экзотика встречается, может никогда и не понадобиться ТСу. system("format C:"); вызвали а потом удивлялись "а чего это все поломалось".
0
|
||||||||
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
|
|
| 25.09.2019, 17:34 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||
| 25.09.2019, 19:08 | ||||||||||||
|
и не знаком с особенностями winapi. но скажи, какое именно слово в этом предложении оказалось тебе не понятным? если мои речи тебе кажутся слишком сложными для понимания, почитай документацию если я тебя правильно понял. system редко используется,просто потому, что у неё функционал слишком бедный. она бесполезна даже для самых типичных задач. пример типичной задачи: есть родительский процесс (gui приложение) из под него нужно запустить дочерний процесс. какую нибудь консольную утилиту. при этом утилита запускается без консольного окна. необходимо дождаться окончания работы утилиты. получить код возврата, и заграбастать весь её вывод (stdout/stderr) теперь покажи, как ты это сможешь оформить "в виде потоков", или при помощи system. что ей впаривают. инвариант? не, не слышал. это - нормальный случай. худший бывает либо у новичков, либо у худших программистов. потому что это удобно. особенно, когда читаешь с телефона. не нужно скролить влево-вправо. ты мне картинку одну сейчас напомнил: "нечего сказать - докалебусь до орфографии" лично мне всё равно, кто как пишет по-русски: "докалебаться до орфографии", "докалебатся до орфографии", или даже: "докалебаццо до орфографии". если при этом не искажается смысл сообщения. поэтому, если я докалёбывюсь, то докалёбываюсь всегда до смысла. докалёбываццо до орфографии - это убого. за нитью беседы следишь? выше ты утверждал: если не куришь нюансы. и вот нахера ты теперь начал загонять про удивление? именно поэтому и возникло понятие "инварианта". только вот сама эта метрика не зависит от скорости разработки. годный программист успевает решать задачи за поставленное время. и при этом он выдаёт качество. плохому программисту
0
|
||||||||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
|
|||||||||||||||||||
| 26.09.2019, 14:06 | |||||||||||||||||||
|
Неужели для вас настолько сложна концепция следования стандартам, даже если требует лишних телодвижений?
cat. Она ждет имена файлов, и не может отследить что первый аргумент ей передают в argv[0].С чего я и начал: если ты неправильно вызываешь программу, она имеет полное право работать не так как ты ожидаешь. Не по теме:
Добавлено через 4 часа 25 минут
1
|
|||||||||||||||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||||||||||||||||||
| 26.09.2019, 15:35 | |||||||||||||||||||
|
Создаст, например, ссылку для запуска и в argv[0] начнет приходить имя этой ссылки, а не "имя исполняемого файла". Или, запуская из консоли вашу программу как
1
|
|||||||||||||||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 26.09.2019, 17:21 | |
|
hoggy, Есть такая вешь - BusyBox.
Допустим вам надо найти строчку "rm" в "очень_важный_файл" Вы, описанным вами способом (со съехавшим на одну позицию argv), запускаете "grep rm очень_важный_файл". Что произойдет? И кто в этом виноват - вы или разработчики BusyBox?
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
|
|||
| 26.09.2019, 17:35 | |||
|
0
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||
| 26.09.2019, 19:45 | ||||
|
Речь шла a.exe, то ожидать, что в argv[0] всегда (c) будет приходить a.exe - не верно. Только об этом.
0
|
||||
|
"C with Classes"
|
|
| 27.09.2019, 04:42 | |
|
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
|
|||
| 27.09.2019, 10:05 | |||
printf("usage: %s [input] -o [output] [flags]\n", argv[0]);, а здесь вообще не важно полный путь, относительный. Даже ошибки hoggy не будут критичными.Для такого применения argv[0] в виде команды вызова - то что надо.
0
|
|||
|
60 / 45 / 17
Регистрация: 12.08.2019
Сообщений: 161
|
||||
| 27.09.2019, 11:51 | ||||
|
есть стандарт языка http://www.open-std.org/jtc1/s... /n4296.pdf 3.6.1 Main function
0
|
||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
|
|
| 27.09.2019, 11:59 | |
|
0
|
|
|
60 / 45 / 17
Регистрация: 12.08.2019
Сообщений: 161
|
|
| 27.09.2019, 12:06 | |
|
Не по теме: тогда вообще не пойму кто тут за красных, а кто за белых ![]()
1
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||
| 27.09.2019, 14:11 | |||
Ну так допустим, что путь к модулю лежит в PATH, соответственно вызов может не содержать этот путь. Или вызов может идти через ссылку, которая лежит в другом месте, относительно самого модуля. Оба случая не зависят ни от кого, кроме пользователя системы, т.е. извращений программиста как бы и нет. Если же в программе нужен именно путь или именно оригинальное имя модуля, то расчет на argv[0] можно считать неоправданным. По-моему Хогги именно про это и говорил. Нет?
0
|
|||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
|
|||||
| 27.09.2019, 14:47 | |||||
|
argv[0] содержит имя, по которому исполняемый файл вызван. Вызов
system(argv[0]); позволяет запустить тот же самый бинарник.При желании это соглашение можно нарушить и передать в argv[0] произвольную строку - но это будет именно нарушением соглашения и для этого нужны веские причины. Дальше создаем мягкую ссылку prog_soft. Пока об оригинальном имени говорить еще можно, хотя и со скрипом. С одной стороны очевидно, что мягкая ссылка вторична по отношению к оригиналу, с другой - пользователь сознательно изменил имя программы (полный путь). Наверное, ему это зачем-то надо. А теперь создем жесткую ссылку prog_hard. Какое из имен теперь "оригинальное"? Жесткая ссылка это просто другое имя того же файла. realpath никто, вроде, не отменял...
0
|
|||||
|
60 / 45 / 17
Регистрация: 12.08.2019
Сообщений: 161
|
|||
| 27.09.2019, 14:57 | |||
0
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||||||||||||
| 27.09.2019, 15:31 | ||||||||||||||
|
COKPOWEHEU, из вашего ответа стало понятно, что вы спорите с вами же самим придуманными утверждениями
![]() Вот например: Далее: Вот опять: И вот снова.
В любом случае здесь надо знать, что в argv[0] может прийти не то имя, которым называется исполняемый файл. Добавлено через 13 минут prog и лежит она в каталоге /opt/3rd_party/bin, который юзер добавил в PATH.Далее он в консоли вызывает вашу программу как
argv[0]? Правильно prog и получит. Что вернет realpath для строки prog? Правильно, NULL вернет. А все потому, что в строке prog нет пути к /opt/3rd_party/bin/prog, ни относительного, ни абсолютного, никакого.Добавлено через 1 минуту Теперь возвращаемся к цитате:
0
|
||||||||||||||
| 27.09.2019, 15:31 | |
|
Помогаю со студенческими работами здесь
40
[Error] 'm' was not declared in this scope [Error] 'k' was not declared in this scope [Error] 'If' was not declared in this scope Ошибка: [Error] 'x' was not declared in this scope
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|