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

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

22.01.2010, 01:58. Просмотров 2446. Ответов 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!


Я знаю, как это сделать. Но знает ли кто-либо еще?
http://www.cyberforum.ru/cpp-beginners/thread1873390.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2010, 01:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Слабо создать программу, которая много чего делает, а в main только return 0? (C++):

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

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

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

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

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

26
ISergey
Maniac
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,745
Записей в блоге: 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 / 2461 / 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
Эксперт С++
1408 / 919 / 148
Регистрация: 02.01.2009
Сообщений: 2,745
Записей в блоге: 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 / 1763 / 212
Регистрация: 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 / 1763 / 212
Регистрация: 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
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,437
Записей в блоге: 30
22.01.2010, 12:30 #17
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Мое решение идентично с вашим. А вот предложенное товарищем Gravity - круче!
Предложение Gravity - это gnu-расширение, т.е. код, который, грубо говоря, кроме как на gcc работать не будет. Единственный ПЕРЕНОСИМЫЙ вариант - тот, который написал ISergey. Всё остальное - это зависит либо от компилятора, либо от ОС, либо от используемой библиотеки и т.д.
0
taras atavin
4204 / 1763 / 212
Регистрация: 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
Привет! Вот еще темы с решениями:

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

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

Что делает Return в плюсах?
Судя по прочитанной литературе по с++ return что-то возвращает в вызывающую...

Не понятно что делает __success(return >= 0)
Увидел определение HRESULT typedef __success(return &gt;= 0) long HRESULT; не...


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

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

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