Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
1

Слабо создать программу, которая много чего делает, а в main только return 0?

22.01.2010, 01:58. Просмотров 2467. Ответов 26
Метки нет (Все метки)

Пояснение:

Имеется некая функции
C++
1
Function() {}
Причем она может делать что угодно.
Кто-то знает, как запустить эту функцию НЕ из main?

Например:

C++
1
2
3
4
5
6
7
8
9
void Function() // Любая ф-ия, которая делает что угодно. (Пример)
{
    cout << "Succeed!\n";
}
 
int main()
{
    return 0;
}
(чё-то сделать, main() НЕ менять!)
Результат:
Bash
1
2
3
overpower8@Milla-home:~/Projects$ g++ Program.cpp -o Program
overpower8@Milla-home:~/Projects$ ./Program
Succeed!


Я знаю, как это сделать. Но знает ли кто-либо еще?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2010, 01:58
Ответы с готовыми решениями:

Почему в одних случаях пишут void main(), а в других случаях int main() {return 1;}
Препод мне доказывает, что void в main`е писать неправильно, а объяснить не...

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

Как в main() создать указатель на функцию, которая находится в классе?
В этом примере как определить указатель на функцию F()? class A { public:...

`main' must return `int'
Почему возникает такая ошибка? И я правильно программу написал? Она должна...

Использование return в main
Если возвращаем 0 то это означает что прога норм завершилась, иначе значит были...

26
ISergey
Maniac
Эксперт С++
1409 / 920 / 148
Регистрация: 02.01.2009
Сообщений: 2,749
Записей в блоге: 1
22.01.2010, 02:07 2
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Я знаю, как это сделать. Но знает ли кто-либо еще?
Представь себе..
0
OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
22.01.2010, 02:08  [ТС] 3
>> ISergey

Так знаешь или нет? (не пиши решение, пусть другие тож подумают...)
0
Gravity
569 / 563 / 64
Регистрация: 29.01.2009
Сообщений: 1,274
22.01.2010, 02:09 4
:)
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
__attribute__ ((constructor))
static void fnc(void)
{
    printf("I can do it ;)\n");
}
 
int main(void)
{
    return 0;
}
0
OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
22.01.2010, 02:12  [ТС] 5
>> Gravity

А решение оригинальное. У меня немного другое, и, на мой взгляд, более простое.
0
Gravity
569 / 563 / 64
Регистрация: 29.01.2009
Сообщений: 1,274
22.01.2010, 02:13 6
OVERPOWER8, ну ладно, убрал под cut
0
inter
9707 / 2462 / 48
Регистрация: 06.03.2009
Сообщений: 8,503
22.01.2010, 02:15 7
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Ну зачем решение-то писать?

Не по теме:

я вам загадку загадаю, кто знает не говорите.




Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
У меня немного другое, и, на мой взгляд, более простое.
Может вам просто в разделе Обо всем создать свой фан клуб?
0
OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
22.01.2010, 02:22  [ТС] 8
Ну что? Есть какие-то мысли (это не относится к Gravity).
0
ISergey
Maniac
Эксперт С++
1409 / 920 / 148
Регистрация: 02.01.2009
Сообщений: 2,749
Записей в блоге: 1
22.01.2010, 02:48 9
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Ну что? Есть какие-то мысли
а мыслей то надо..
...
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
class Employee{
public:
    Employee() { std::cout << "Hello\n"; }
} emp;
 
int main(){
    return 0;
}
http://codepad.org/XO4Q7MwB
0
OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
22.01.2010, 03:08  [ТС] 10
>> ISergey

Мое решение идентично с вашим. А вот предложенное товарищем Gravity - круче!
0
taras atavin
4204 / 1767 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
22.01.2010, 06:29 11
Куда копать эту задачу
Надо подменить точку входа. То есть воткунуть стартовый адрес на другую функцию. Все эти конструкторы статических объектов, статик-функции - всё это из этой серии. В том же направлении можно найти и чтото ещё.
0
zim22
depict1
276 / 141 / 4
Регистрация: 11.07.2009
Сообщений: 606
22.01.2010, 11:17 12
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Я знаю, как это сделать. Но знает ли кто-либо еще?
я не знаю. какой в этом смысл?
***
кстати, а вы знаете, что операция сложения ассоциативна?
т.е. (а + б) + ц = а + (б + ц)
***
а вы знаете, что воробей не умеет ходить? он умеет только прыгать!
***
!!! записывайтесь в мой фан-клуб.
3
Rififi
2363 / 1056 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
22.01.2010, 11:28 13
Лучший ответ Сообщение было отмечено как решение

Решение

Слабо создать программу, которая много чего делает, а в main только return 0?
Я знаю, как это сделать. Но знает ли кто-либо еще?


Выдержки из дневника юного программиста:

Сегодня читал книжку "Освой C++ за 1 час". В самом конце прочитал про глобальные объекты. Они оказывается еще и не-POD могут быть. Ну ващще крутизна. Интересно, знает ли об этом еще кто-нибудь кроме меня?
3
zim22
depict1
276 / 141 / 4
Регистрация: 11.07.2009
Сообщений: 606
22.01.2010, 12:03 14
я тут подумал, OVERPOWER8 ты перепутал личный блог с форумом.
заведи его себе и пиши в нём, какой ты умный
0
taras atavin
4204 / 1767 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
22.01.2010, 12:08 15
А по-моему, он предложил размяться.
0
OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
22.01.2010, 12:17  [ТС] 16
>> taras atavin

Соврешенно верно. Я предложил размяться. А кому не интересно, попросил бы проигнорировать эту тему.
0
Evg
Эксперт CАвтор FAQ
19289 / 7148 / 528
Регистрация: 30.03.2009
Сообщений: 20,001
Записей в блоге: 30
22.01.2010, 12:30 17
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Мое решение идентично с вашим. А вот предложенное товарищем Gravity - круче!
Предложение Gravity - это gnu-расширение, т.е. код, который, грубо говоря, кроме как на gcc работать не будет. Единственный ПЕРЕНОСИМЫЙ вариант - тот, который написал ISergey. Всё остальное - это зависит либо от компилятора, либо от ОС, либо от используемой библиотеки и т.д.
0
taras atavin
4204 / 1767 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
22.01.2010, 12:34 18
Единственный? Я так не думаю. Разве нельзя покопаться в готовом исполняемом коде и подменить стартовый адрес в заголовке файла?
0
OVERPOWER8
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
22.01.2010, 12:45  [ТС] 19
>> Evg

Предложение Gravity - это gnu-расширение, т.е. код, который, грубо говоря, кроме как на gcc работать не будет.
А вот и не правда! У меня на G++ он идеально заработал!
0
Gravity
569 / 563 / 64
Регистрация: 29.01.2009
Сообщений: 1,274
22.01.2010, 12:46 20
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
А вот и не правда! У меня на G++ он идеально заработал!
g++ это и есть команда GNU-компилятора.
0
22.01.2010, 12:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2010, 12:46

Написать программу которая делает перестановки введенных симолов
Доброго всем времени суток. вот такая задачка. 4. Написать программу которая...

Ошибка main' must return 'int'
Line 6: error: '::main' must return 'int' compilation terminated due to...

В чём смысл return в main()?
Есть ли смысл возвращать значение переменной в main()? Если да - зачем? ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru