Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 213

Error: 'system' was not declared in this scope

24.09.2019, 11:47. Показов 10511. Ответов 68
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как я понял параметры argv[] это консольные команды которые добавляются к имени файла в командой строке.

Можно ли способом описаным у меня ниже назначить команде определенные действия при вызове программы с этой командой?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
 
void text()
{
     cout << "старт" << endl;
}
 
int main(int argc, char* argv[])
{
    if (argc > 0)
        {
                 if (argv[1]="start")
       {
                       text;
       }
        }
       return 0;
system("pause");
}
Да еще ругается на system(pause) в конце главного цикла, что не найден хедер stdafx.h . Код пишу в CodeBlocks и в ней пишет что не знает такого хедера как "stdafx.h". Вообще погуглил и узнал что для этото нужна студия VS. Но в бесплатной версии студии этого хедера (и других связаным с ним) нет.

Мне нужно чтобы программа не выключалась после работы. В делфи для этого использовал read;. А как без system(pause) или каким-то другим способом оставить программу после выполнения?

Если че язык С++ не знаю вобще, только изучаю и многое непонятно -_-.

Добавлено через 6 минут
Проблема с pause решена. Натупил по невнимательности. Там ниже кода вообще бред написан.

Добавлено через 1 минуту
А нет всетаки пишет:
error: 'system' was not declared in this scope
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.09.2019, 11:47
Ответы с готовыми решениями:

'arr' was not declared in this scope 'sum' was not declared in this scope такие вот ошибки.(
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main () { setlocale(LC_ALL, &quot;rus&quot;); ...

Не компилируется приложение: 'system' was not declared in this scope
Привет всем, теперь на форуме на одного глупого первокурсника больше) Немогу откомпилировать, хотя в универе тотже код работает...

error: . was not declared in this scope
Здравстуйте! Недавно начал изучать С++. Нужно написать программу вычисления периметра треугольника через функцию. В коде возникла ошибка:...

68
27.09.2019, 15:39
Студворк — интернет-сервис помощи студентам

Не по теме:

Чем на больше страниц растянулась тема, тем меньше в этой теме смысла. DrOffset, луче бы мне в личку ответил (току больше бы было) на счет видосов по С++ я спрашивал.

0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
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
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
27.09.2019, 16:14
Цитата Сообщение от QuestionAnd Посмотреть сообщение
какого соглашения, если даже в стандарте написано необязательно там имя программы
Либо argv == 0, это проверяется отдельно.
Цитата Сообщение от DrOffset Посмотреть сообщение
Может программист его хочет в базу данных сохранить?
Так кто ему мешает?
Цитата Сообщение от DrOffset Посмотреть сообщение
Ваша цитата тов. Хогги не демонстрирует
Да это была первая попавшаяся цитата более-менее по теме, просто лень было листать страницу. Я оптимистично предполагал, что прежде чем отвечать на комментарий собеседник ознакомиться еще и с сутью дискуссии. Если надо другую - пожалуйста.
Цитата Сообщение от hoggy Посмотреть сообщение
argv[0] всегда содержит имя исполняемого файла
прохладная история, Бро.
Даже приведу контекст: ТСу сказали, что аргументы в программу передаются не с нулевого (там имя файла / путь к нему), а с первого. О практическом использовании argv[0] речь изначально не шла.
Цитата Сообщение от DrOffset Посмотреть сообщение
не факт, что нулевой аргумент хранит путь к модулю
Она, что, разве не верна, раз вы с ней спорите?
В общем случае верна, конечно. И сам hoggy приводил пример как можно вместо пути подставить какой-то мусор. Но это настолько редкое явление, что новичку не имеет смысла обращать на него внимание.
Еще раз: я спорю не с конкретной цитатой.
Цитата Сообщение от DrOffset Посмотреть сообщение
Оригинальное - значит то имя, которое есть у файла исполняемого модуля.
в argv[0] может прийти не то имя, которым называется исполняемый файл.
Я запускаю файл по имени prog_soft. Какая разница, является ли этот файл жесткой ссылкой или мягкой? В argv[0] приходит именно то, что ожидается - имя файла, по которому программа запущена.
Однажды я даже извратнулся с именами: прописал в конец настройки программы, вместо конфига. То есть вызывал программу по ссылке ./prog_1000_1000_s_

Добавлено через 12 минут
Цитата Сообщение от DrOffset Посмотреть сообщение
Вот допустим ваша программа называется prog и лежит она в каталоге /opt/3rd_party/bin, который юзер добавил в PATH.
Ок, согласен, realpath слишком примитивная штука. Но argv[0] все равно остается путем, по которому файл был вызван.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
27.09.2019, 16:16
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Я оптимистично предполагал, что прежде чем отвечать на комментарий собеседник ознакомиться еще и с сутью дискуссии.
Вот вам тоже не мешало бы ознакомиться с сутью того, с чем вы спорите.
А то так получается, что вы спорите совсем не с тем, что было сказано.
Подсказка: имя исполняемого файла, и имя, по которому, файл был исполнен - это разные вещи.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
27.09.2019, 18:27
Цитата Сообщение от DrOffset Посмотреть сообщение
имя исполняемого файла, и имя, по которому, файл был исполнен - это разные вещи.
... и какой из них правильнее передавать через аргументы - вопрос вкуса. Обычно передают команду по которой программа была вызвана. Можно спорить насколько это удобно, но логика в такой трактовке есть.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.09.2019, 20:20
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
и это должно быть доведено до автоматизма.
речь не о том, кто кому чего должен.
а о том, что употребив слово "всегда",
Бро поведал нам прохладную историю.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
То есть для тебя будет откровением, что некоторые утилиты принимают просто текст, который физически невозможно проверить на корректность. Простейший пример - конкатенация файлов через cat. Она ждет имена файлов, и не может отследить что первый аргумент ей передают в argv[0].
не знаю, с чего ты взял своё "то есть".
такое впечатление, что ты читаешь текст,
и видишь то, чего нет.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А ты можешь гарантировать успешность завершения данной операции?
какой такой "данной операции" ?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Или предпочитаешь чтобы программа падала с невразумительными кодами возврата вместо осмысленного сообщения?
я предпочитаю, что бы люди чутка думали о том,
что говорят или пишут.

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

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Еще решение через system.
спасибо за код.
а код возврата дочернего процесса где?


Цитата Сообщение от avgoor Посмотреть сообщение
Вы, описанным вами способом (со съехавшим на одну позицию argv), запускаете "grep rm очень_важный_файл". Что произойдет?
будет запущен процесс grep, который получит на входе:
"rm очень_важный_файл".

и если у него действительно съедут аргументы,
и если он мух не ловит,
тогда он поимеет один аргумент очень_важный_файл

в этом случае, grep будет думать,
что это - образец, который нужно искать в тексте,
который ему дадут на входе.

то есть, grep будет думать, что запущен в режиме конвейера: ololo | grep очень_важный_файл
и зависнет в ожидании данных из канала ввода.

что у тебя точно не получится,
так это ничайно удалить нужный файл.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
27.09.2019, 20:25
Цитата Сообщение от hoggy Посмотреть сообщение
что у тебя точно не получится,
так это ничайно удалить нужный файл.
Почему? BusyBox по argv[0] и определяет, что ему делать. В той системе где он есть, rm - символическая ссылка на бинарник "BusyBox", не более того.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
28.09.2019, 09:41
Цитата Сообщение от hoggy Посмотреть сообщение
употребив слово "всегда", Бро поведал нам прохладную историю.
Угу. А для походов в пустыню всегда нужно готовиться к встрече с акулой.
Цитата Сообщение от hoggy Посмотреть сообщение
не знаю, с чего ты взял своё "то есть".
Ладно, я могу развернуть логическую цепочку еще подробнее.
Есть утилита cat, которая берет файлы, переданные ей в аргументах, и выводит их содержимое. Естественно, свое содержимое она не выводит. Вы ей подсовываете аргументы не в argv[1]...argv[N], а в argv[0]...argv[N-1]. Каким образом программа должна узнать, что ее вызвал криворукий погромист, плюющий на стандарты? А главное - какое ей до этого дело? Она честно выведет содержимое всех файлов кроме первого. Это будет не то, чего ожидал погромист, но то, что он накодил.
Цитата Сообщение от hoggy Посмотреть сообщение
какой такой "данной операции" ?
Мне в глаза бросилось выделение памяти.
Цитата Сообщение от hoggy Посмотреть сообщение
спасибо за код.
а код возврата дочернего процесса где?
Неужели так сложно прочитать структурированный и прокомментированный код?! Ладно, распишу алгоритм решения вашей проблемы подробнее. Сторонний процесс вызывается функцией system. Читаем на нее документацию:
man system
Code
1
2
3
4
5
6
7
8
9
10
SYSTEM(3)                                  Linux Programmer's Manual                                 SYSTEM(3)
NAME
       system - execute a shell command
...
RETURN VALUE
       The return value of system() is one of the following:
...
       *  If all system calls succeed, then the return value is the termination status of the child shell used
          to execute command.  (The termination status of a shell is the termination status of the  last  com‐
          mand it executes.)
То есть нас интересует возвращаемое значение. Какое совпадение - оно присваивается переменной res, которая потом передается в return (32 строчка).
Цитата Сообщение от hoggy Посмотреть сообщение
что у тебя точно не получится, так это ничайно удалить нужный файл.
Даже если так (в чем я не уверен), результат будет далек от ожидаемого.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.09.2019, 23:01
Цитата Сообщение от avgoor Посмотреть сообщение
Почему? BusyBox по argv[0] и определяет, что ему делать.
я не правильно тебя понял.
я подумал, что когда ты писал:
Цитата Сообщение от avgoor Посмотреть сообщение
запускаете "grep rm очень_важный_файл"
то имел ввиду, что хочешь таким образом запустить grep.

на самом же деле,
если я правильно тебя понял,
ты имел ввиду запуск BusyBox.

если так, и если BusyBox мух не ловит,
я бы задумался: стоил и вообще с ним связываться.

Добавлено через 9 минут
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Угу. А для походов в пустыню всегда нужно готовиться к встрече с акулой.
это ты с Бро лучше обсуждай.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Каким образом программа должна узнать, что ее вызвал криворукий погромист, плюющий на стандарты?
во-первых,
как это коррелирует с твоим дурацким "то есть"?

а во-вторых,
у тебя какие то сложности проверить аргументы что ли?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Мне в глаза бросилось выделение памяти.
и?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Неужели так сложно прочитать структурированный и прокомментированный код?!
спасибо.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
29.09.2019, 00:33
Цитата Сообщение от hoggy Посмотреть сообщение
я бы задумался: стоил и вообще с ним [busybox] связываться.
А почему нет?
Цитата Сообщение от hoggy Посмотреть сообщение
это ты с Бро лучше обсуждай.
Но ведь это не он несет чушь про argv[0]. Он совершенно правильно сказал, что в argv[0] передается путь к исполняемому файлу. Какой смысл с этим спорить.
Цитата Сообщение от hoggy Посмотреть сообщение
у тебя какие то сложности проверить аргументы что ли?
Каким образом? Если аргументы - произвольные строки.
С какой целью? Если вызывающая сторона гарантирует правильный вызов.
Цитата Сообщение от hoggy Посмотреть сообщение
и?
И ответа как не было так и нет: где проверка успешности выделения?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
29.09.2019, 01:00
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Но ведь это не он несет чушь про argv[0]. Он совершенно правильно сказал, что в argv[0] передается путь к исполняемому файлу. Какой смысл с этим спорить.
он этого не писал говорил.
ты реально видишь то, чего нет.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Каким образом?
может быть два варианта:
1.
в нулевом аргументе хранится путь к модулю,
в остальных аргументах - собственно, аргументы команды.

2.
путь к модулю не был передан.
значит все аргументы - собственно, аргументы команды.

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

дальше валидируешь собственно аргументы.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
С какой целью? Если вызывающая сторона гарантирует правильный вызов.
и вот откуда ты взял своё "если"?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
где проверка успешности выделения?
я думал, что уж такие то азы языка ты знаешь.
а ты оказывается вообще ни бум-бум?

если вкратце:
проверка успешности выделения памяти имеет смысл только и только для случая,
когда new не кидает исключения.

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main()
{
    int* p = nullptr;
    p = new (std::nothrow) int(10);
    if(p)
        std::cout << *p << '\n';
}
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
29.09.2019, 01:02
Цитата Сообщение от hoggy Посмотреть сообщение
на самом же деле,
если я правильно тебя понял,
ты имел ввиду запуск BusyBox.
если так, и если BusyBox мух не ловит,
я бы задумался: стоил и вообще с ним связываться.
Дык, а с чем связываться то? В embedded вообще нет альтернативы для POSIX-окружения. Т.е. 99.9%, что в твоем роутере он есть (а еще в кофеварке итп). Как страшно жить. Мы все умрем.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
29.09.2019, 08:28
Цитата Сообщение от hoggy Посмотреть сообщение
он этого не писал говорил.
Да сколько ж можно! Вот прямая цитата:
Цитата Сообщение от hoggy Посмотреть сообщение
argv[0] всегда содержит имя исполняемого файла
прохладная история, Бро.
Учитывая, что сказано было для ТСа, то есть максимально простым языком, на тонкости argc=0 и имя вместо пути акцент не сделан.
Или это вы упорно спорите не с тем, что было сказано, а со своими фантазиями.
Цитата Сообщение от hoggy Посмотреть сообщение
может быть два варианта:
1. корректный вызов
2. некорректный вызов
Так вот, работоспособность гарантируется только при корректном использовании. Если вызывающая сторона болт кладет на стандарты - ССЗБ.
Цитата Сообщение от hoggy Посмотреть сообщение
итак, ты берешь нулевой аргумент.
нормализуешь его.
запрашивает через системное апи путь к собственному модулю.
и сравниваешь. если равны - значит это первый кейс.
если нет - второй кейс.
дальше валидируешь собственно аргументы.
Приведите полный код, как это должно выглядеть.
Цитата Сообщение от hoggy Посмотреть сообщение
и вот откуда ты взял своё "если"?
Цитаты тут уже приводили.
Цитата Сообщение от hoggy Посмотреть сообщение
я думал, что уж такие то азы языка ты знаешь. а ты оказывается вообще ни бум-бум?
если вкратце:
проверка успешности выделения памяти имеет смысл только и только для случая, когда new не кидает исключения.
Вы уже подошли к мысли, что не все ошибки передаются через возвращаемое значение. Я даже подскажу, что стандартных способов минимум три - возвращаемое значение, errno и исключения.
Так вот, new использует механизм исключений. Где в вашем коде обработка исключений?
Цитата Сообщение от hoggy Посмотреть сообщение
p = new (std::nothrow) int(10);
Другая запись: noexcept(a = new int[10000000]);
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
30.09.2019, 14:49
Цитата Сообщение от hoggy Посмотреть сообщение
я это понимаю так: этот балбес считает,
что argv[0] всегда содержит имя исполняемого файла
как вообще ты мог понять это как то иначе?
А теперь не цепляемся к словам (поскольку ответ был "для новичка" а не ради спора).
Тебя не устраивает что в argv[0] хранится не только имя файла, а еще и путь к нему?
Тебя не устраивает редкое исключение, когда argc=0 и тогда argv[0]=NULL?
Тебя не устраивает существование идиотов, подменяющих argv[0] на свой мусор?
Тебя не устраивает что-то еще?
Цитата Сообщение от hoggy Посмотреть сообщение
ты обработку эксепшена называл стандартной проверкой
Я обозвал стандартную проверку выделения памяти стандартной проверкой. А уж какой механизм передачи ошибки использован в конкретном случае - значения не имеет.
Повторяю вопрос: ты даешь 100% гарантию что операция выделения памяти закончится успешно?
Цитата Сообщение от hoggy Посмотреть сообщение
ты покажи сначала свою сранную "стандартную проверку".
Да что ж тебе прописные истины разжевывать надо! Почитай уже учебник.
Стандартное выделение памяти в Си:
C
1
2
x = (type*)malloc( sizeof(type) * size);
if(x == NULL)...
Стандартное выделение памяти в С++:
C++
1
2
3
4
5
try{
  x = new type[size];
}catch(std::bad_alloc){
    ...
}
Выделение памяти в С++ в стиле Си:
C++
1
2
noexcept(x = new type[size]);
if( x == NULL )...
Цитата Сообщение от hoggy Посмотреть сообщение
такое впечатление, что ты либо бухой,
либо лекарства забыл принять.
Ты по себе-то не суди.
Цитата Сообщение от hoggy Посмотреть сообщение
не пиши мне больше ничего.
Ну конечно, по существу-то сказать нечего, вот и пытаешься назвать собеседника идиотом и уйти от темы.
Но код проверки argv[0] ты так и не привел. Получается, ты и сам не знаешь, как он должен выглядеть, раз не скопипастил откуда-нибудь и не написал с нуля. Так какой смысл позориться дальше и утверждать что это вот самая-самая важная проверка, без нее никуда.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
30.09.2019, 15:15
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Выделение памяти в С++ в стиле Си:
Бред, особенно это:
C++
1
noexcept(x = new type[size]);
Здесь идет вызов оператора noexcept, который только проверяет выражение no throw оно или нет.
new который не бросает исключения выглядит так:
C++
1
new (std::nothrow) type[size];
Добавлено через 3 минуты
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
x == NULL
И да, если память не изменяет, то макрос NULL не всегда дефайн nullptr, поэтому nullptr всегда в приоритете.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
30.09.2019, 18:10
Цитата Сообщение от Azazel-San Посмотреть сообщение
И да, если память не изменяет, то макрос NULL не всегда дефайн nullptr, поэтому nullptr всегда в приоритете.
Тут hoggy как ни странно угадал: С++ я знаю намного хуже, чем Си. Соответственно, пока есть возможность сохранять совместимость с Си стараюсь это делать.
Цитата Сообщение от Azazel-San Посмотреть сообщение
Бред, особенно это:
noexcept(x = new type[size]);
Перепроверил оба варианта. Мой в случае неудачи не меняет значение указателя, то есть перед использованием его придется занулить. Ваш зануляет сам.
Хорошо, ваш вариант более правильный, хотя работоспособны оба.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.09.2019, 18:17
Цитата Сообщение от Azazel-San Посмотреть сообщение
Бред, особенно это:
он - сишник, который пытается умничать в теме с++,
в которой ни бум бум.

пьяный проспиццо, дурак - никогда
(ц)Пётр 1.

Добавлено через 3 минуты
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
noexcept(x = new type[size]);
эта конструкция делает вовсе не то, о чем ты подумал
1
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
30.09.2019, 18:22
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Соответственно, пока есть возможность сохранять совместимость с Си стараюсь это делать.
Ее уже не может быть (и не будет), если вы начали использовать С++ specific вещи (тот же new).
Поэтому если уж речь о С++, то давайте говорить в контексте С++, а не смешивать.
Понятное дело, что в каком-то случае вам может быть нужна обратная совместимость с Си, но это уже другая тема, ИМХО.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Мой в случае неудачи не меняет значение указателя, то есть перед использованием его придется занулить.
Ваш вариант ничего не делает, кроме проверки во время compile-time того является ли выражение x = new type[size] nothrow или нет, а затем вызывает обычный new, со всеми вытекающими и исключения все еще надо будет ловить, если надо.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Ваш зануляет сам.
Это гарантируется, что вместо исключения указатель будет == nullptr.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Хорошо, ваш вариант более правильный, хотя работоспособны оба.
Они кардинально разные.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,922
01.10.2019, 09:54
Цитата Сообщение от hoggy Посмотреть сообщение
он - сишник, который пытается умничать в теме с++, в которой ни бум бум.
Туда где я "ни бум-бум" я и не лезу, в отличие от тебя.
С каких это пор соглашение о передаче аргументов в main стало С++ специфичным?!
Код проверки argv[0] ты так и не привел, хотя утверждаешь что он стандартный.
Цитата Сообщение от Azazel-San Посмотреть сообщение
Поэтому если уж речь о С++, то давайте говорить в контексте С++, а не смешивать.
Да я не против. Ваш вариант более правильный. При необходимости буду пользоваться им, но там где возможно - обычным malloc'ом (у него есть несомненный бонус в виде realloc'а и совместимости с Си).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.10.2019, 09:54
Помогаю со студенческими работами здесь

[Error] 'm' was not declared in this scope
почему программа не видит m,h??? пишет ошибку 'm' was not declared in this scope 'h' was not declared in this scope #include...

[Error] 'k' was not declared in this scope
#include &lt;iostream&gt; using namespace std; int main() { { int k; char z = { &quot; x x ...

[Error] 'If' was not declared in this scope
Недавно начал изучать Си++. Написал программу почти так же, как в примере из книги. #include &lt;iostream&gt; #include...

Ошибка: [Error] 'x' was not declared in this scope
Не могу понять в чём ошибка. Компилятор пишет что в строке cin&gt;&gt;x.name&gt;&gt;x.surname&gt;&gt;x.number; . Ошибка: 'x' was not declared in this scope....

Error 'setprecision' was not declared in this scope
Глупый скела снова здесь! И так, что я опять сделал не так?)) Ошибка : error 'setprecision' was not declared in this scope #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
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 https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
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 позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru