C 程序:没有main()
函数
原文:https://www.studytonight.com/c/programs/misc/program-without-main-function
下面是一个没有main()
的程序。
在下面的程序中,main()
功能在那里,但是使用预处理器隐藏。
第二行可以看到,使用了#define decode()
函数,保存m,a,i,n
的字符组合,后面跟##m##a##i##n
。
这里##
运算符用于按照使用##
提到的顺序合并字符,即main
在第三行#define go decode(m,a,i,n)
中,由于我们以相同的顺序指定了字符,decode
功能将为go
赋值main
。
#include<stdio.h>
//Need to include the following statements in same manner
#define decode(m,a,i,n) m##a##i##n
#define go decode(m,a,i,n)
int go()
{
printf("\n\n\t\tStudytonight - Best place to learn\n\n\n");
printf("You have just executed your first program without making use of main() function!\n");
printf("\n\n\t\t\tCoding is Fun !\n\n\n");
return 0;
}
输出:
我们可以在这里使用不同的单词和组合,比如
#define decode(s,t,u,m,p,e,d) m##s##u##t
#define go decode(a,n,i,m,a,t,e)
这里按照第一行,第四、第一、第三和第二个字符必须组成一个单词。当同样的组合从动画这个词中取出时,它使成为主。
使用宏定义 main
#include<stdio.h>
#define go main
int go(void)
{
printf("Welcome to Studytonight");
return 0;
}
这是最简单的技术,我们所做的就是为我们的main()
函数提供一个不同的名字,这个名字是在程序执行之前设置的main
。
使用标记粘贴操作符
#include<stdio.h>
#define go m##a##i##n
int go(void)
{
printf("Welcome to Studytonight");
return 0;
}