Абсолютно just4fun порой люблю задавать C++ программистам (в основном начинающим, хотя я тоже не особо опытный), следующую задачу (я думаю, что это жуткий боян, но многие про неё и не слышали), которую как-то увидел на одном из форумов. А задача предельно проста: Необходимо написать программу, которая печатает фразу "Hello world", но при условии, что функция int main(int argc, char* argv[]) выглядит следующим образом и не может быть изменена (ни сигнатура, ни тело):
int main(int argc, char* argv[])
{
return 0;
}
Некоторые предлагают использовать например define и переопредить return. Но тогда мы "ломаем" return. Вообщем с макросами можно "играться", но я их предпочитаю использовать в С++ исключительно для защиты от повторного include и возможно для реализации некоторых платформо-зависимых кусков кода.
Самый простой для меня например способ - это просто инициализация глоабльной переменной с помощью вызова глобальной функции, в которой как раз и происходит печать:
#include <cstdio>
int foo()
{
printf("Hello world\n");
return 10;
}
int n = foo();
int main(int argc, char* argv[])
{
return 0;
}
Всё просто :) Есть еще вариации с помощью классов (в конструкторе для глобального объекта), потоки ostream и т.д. Вариантов немало.
Комментариев нет:
Отправить комментарий