воскресенье, 8 июля 2012 г.

Main

Прогуливаясь по файловой системе, обнаружил в закромах небольшой файл с кодом. Взглянув на него, я вспомнил, что некоторое время назад пытался понять можно ли в Си вызвать функцию main рекурсивно. Тогда я не закончил исследование - вероятно, не хватило навыка работы с указателями.
Оказывается, main ничем от других функций не отличается (помимо того, что является точкой входа в программу). Приведённый ниже код компилируется с самыми "жёсткими" флагами и успешно работает (печатает переданные аргументы).

#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc > 1) {
        printf("%s\n", argv[1]);
        main(argc - 1, argv + 1);
    }
    return 0;
}

Комментариев нет: