какая польза от int i () - PullRequest
       0

какая польза от int i ()

0 голосов
/ 04 сентября 2010
#include <stdio.h>
#define main() main(){printf("hi");}int i()
main()
{//empty main
}

какая польза от int i()

Ответы [ 4 ]

3 голосов
/ 04 сентября 2010

Подумайте о том, что вы получите, если развернуть макрос main() в программе:

#include <stdio.h>
main(){printf("hi");}int i()
{//empty main
}

. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}}}}.

Что касается намерений, я могу только догадываться, что смысл макроса в том, чтобы заменить существующий main заглушкой.Это немного странно ИМО.

3 голосов
/ 04 сентября 2010

В этом коде main() будет расширен, и результат закончится

int i()
{//empty main
}

какая польза от int i()

Это делает вывод очень странного и испорченного макроса компилируемым

3 голосов
/ 04 сентября 2010

Это довольно глупая программа, но цель int i() в том, чтобы она скомпилировалась - фигурные скобки в конце:

{//empty main
}

вызовут ошибку, если не будет функциидекларация включена в #define заявление.Если я удаляю его, gcc выдает ошибку:

testfile.c:4: error: expected identifier or ‘(’ before ‘{’ token

Вы можете использовать флаг -E для gcc, чтобы понять, почему необходим int i() - он покажет вам вывод препроцессора без компиляции.

0 голосов
/ 04 сентября 2010
    #include <stdio.h> 
    #define main() main(){printf("hi");}int i() 
    main() 
    {//empty main 
    } 
     I guess int i() is another preprocessor directive  which should be called in the program after main.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...