|
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 221
|
||||||
Error: 'system' was not declared in this scope24.09.2019, 11:47. Показов 11001. Ответов 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
|
| 27.09.2019, 15:39 | |
|
Не по теме: Чем на больше страниц растянулась тема, тем меньше в этой теме смысла. DrOffset, луче бы мне в личку ответил (току больше бы было) на счет видосов по С++ я спрашивал.
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 27.09.2019, 15:44 | |
|
del
0
|
|
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
| 27.09.2019, 15:49 | |
|
Если программе нужно знать, как ее вызвали, она проверяет arv[0].
Напр из хорошо известного: runq, rmail, sendmail, rsmtp - это символьные ссылки на exim4, если установлен этот почтовик. Очевично, они меняют логику работы программы.
0
|
|
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
||||||||
| 27.09.2019, 16:14 | ||||||||
|
Еще раз: я спорю не с конкретной цитатой. Однажды я даже извратнулся с именами: прописал в конец настройки программы, вместо конфига. То есть вызывал программу по ссылке ./prog_1000_1000_s_Добавлено через 12 минут
0
|
||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 27.09.2019, 16:16 | ||
|
А то так получается, что вы спорите совсем не с тем, что было сказано. Подсказка: имя исполняемого файла, и имя, по которому, файл был исполнен - это разные вещи.
0
|
||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
||
| 27.09.2019, 18:27 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 27.09.2019, 20:20 | |||||||
|
а о том, что употребив слово "всегда", Бро поведал нам прохладную историю. такое впечатление, что ты читаешь текст, и видишь то, чего нет. что говорят или пишут. особенно это касается случаев, когда они заявляют о "стандартных проверках". а по факту, там проверять вообще нечего. а код возврата дочернего процесса где? "rm очень_важный_файл". и если у него действительно съедут аргументы, и если он мух не ловит, тогда он поимеет один аргумент очень_важный_файл в этом случае, grep будет думать, что это - образец, который нужно искать в тексте, который ему дадут на входе. то есть, grep будет думать, что запущен в режиме конвейера: ololo | grep очень_важный_файли зависнет в ожидании данных из канала ввода. что у тебя точно не получится, так это ничайно удалить нужный файл.
0
|
|||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 27.09.2019, 20:25 | ||
|
0
|
||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
|||||||||||
| 28.09.2019, 09:41 | |||||||||||
|
Есть утилита cat, которая берет файлы, переданные ей в аргументах, и выводит их содержимое. Естественно, свое содержимое она не выводит. Вы ей подсовываете аргументы не в argv[1]...argv[N], а в argv[0]...argv[N-1]. Каким образом программа должна узнать, что ее вызвал криворукий погромист, плюющий на стандарты? А главное - какое ей до этого дело? Она честно выведет содержимое всех файлов кроме первого. Это будет не то, чего ожидал погромист, но то, что он накодил. man system
0
|
|||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 28.09.2019, 23:01 | |||||||
|
я подумал, что когда ты писал: на самом же деле, если я правильно тебя понял, ты имел ввиду запуск BusyBox. если так, и если BusyBox мух не ловит, я бы задумался: стоил и вообще с ним связываться. Добавлено через 9 минут как это коррелирует с твоим дурацким "то есть"? а во-вторых, у тебя какие то сложности проверить аргументы что ли?
0
|
|||||||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
|||||
| 29.09.2019, 00:33 | |||||
|
С какой целью? Если вызывающая сторона гарантирует правильный вызов.
0
|
|||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||
| 29.09.2019, 01:00 | ||||||||||
|
ты реально видишь то, чего нет. 1. в нулевом аргументе хранится путь к модулю, в остальных аргументах - собственно, аргументы команды. 2. путь к модулю не был передан. значит все аргументы - собственно, аргументы команды. итак, ты берешь нулевой аргумент. нормализуешь его. запрашивает через системное апи путь к собственному модулю. и сравниваешь. если равны - значит это первый кейс. если нет - второй кейс. дальше валидируешь собственно аргументы. а ты оказывается вообще ни бум-бум? если вкратце: проверка успешности выделения памяти имеет смысл только и только для случая, когда new не кидает исключения.
0
|
||||||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 29.09.2019, 01:02 | ||
|
0
|
||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
||||||||
| 29.09.2019, 08:28 | ||||||||
|
Или это вы упорно спорите не с тем, что было сказано, а со своими фантазиями. Так вот, new использует механизм исключений. Где в вашем коде обработка исключений? noexcept(a = new int[10000000]);
0
|
||||||||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
|||||||||||||||||||||
| 30.09.2019, 14:49 | |||||||||||||||||||||
|
Тебя не устраивает что в argv[0] хранится не только имя файла, а еще и путь к нему? Тебя не устраивает редкое исключение, когда argc=0 и тогда argv[0]=NULL? Тебя не устраивает существование идиотов, подменяющих argv[0] на свой мусор? Тебя не устраивает что-то еще? Повторяю вопрос: ты даешь 100% гарантию что операция выделения памяти закончится успешно? Стандартное выделение памяти в Си:
Но код проверки argv[0] ты так и не привел. Получается, ты и сам не знаешь, как он должен выглядеть, раз не скопипастил откуда-нибудь и не написал с нуля. Так какой смысл позориться дальше и утверждать что это вот самая-самая важная проверка, без нее никуда.
0
|
|||||||||||||||||||||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|||||||||||||
| 30.09.2019, 15:15 | |||||||||||||
noexcept, который только проверяет выражение no throw оно или нет.new который не бросает исключения выглядит так:
0
|
|||||||||||||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
|||
| 30.09.2019, 18:10 | |||
|
Хорошо, ваш вариант более правильный, хотя работоспособны оба.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 30.09.2019, 18:17 | |||
|
в которой ни бум бум. пьяный проспиццо, дурак - никогда (ц)Пётр 1. Добавлено через 3 минуты
1
|
|||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|||||
| 30.09.2019, 18:22 | |||||
|
Поэтому если уж речь о С++, то давайте говорить в контексте С++, а не смешивать. Понятное дело, что в каком-то случае вам может быть нужна обратная совместимость с Си, но это уже другая тема, ИМХО. x = new type[size] nothrow или нет, а затем вызывает обычный new, со всеми вытекающими и исключения все еще надо будет ловить, если надо.
0
|
|||||
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,026
|
|||
| 01.10.2019, 09:54 | |||
|
С каких это пор соглашение о передаче аргументов в main стало С++ специфичным?! Код проверки argv[0] ты так и не привел, хотя утверждаешь что он стандартный.
0
|
|||
| 01.10.2019, 09:54 | |
|
[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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|