int i()的用途是什么

时间:2010-09-04 06:06:06

标签: c

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

int i()

的用途是什么?

4 个答案:

答案 0 :(得分:3)

这是一个相当愚蠢的程序,但int i()的目的是为了编译 - 最后的括号:

{//empty main
}
如果#define语句中没有包含函数声明,

将导致错误。如果我删除它,gcc会给出错误:

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

你可以使用-E标志来查看为什么int i()是必要的 - 它会在不编译的情况下显示预处理器的输出。

答案 1 :(得分:3)

考虑一下如果在程序中展开宏main(),你会得到什么:

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

需要int i()来创建语法上有效的函数定义的剩余{ ... }部分。

至于意图,我只能猜测宏的重点是用存根替换现有的main。这是一个有点icky IMO。

答案 2 :(得分:3)

在该代码中,main()将被展开,结果将以

结束
int i()
{//empty main
}
  

int i()

的用途是什么?

它使得一个非常奇怪且破碎的宏的输出可编辑

答案 3 :(得分:-4)

    #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.