可以用C语言创建一个大写M的函数Main()
吗?
由于具有相同名称但不同情况的两个元素被视为单独的实体,因此我认为可以创建Main()
,但我只需要确认。
当然可以,为什么不呢?预处理器和编译器并不关心"Main"
和"main"
是否本质上相似。C是区分大小写的,因此"Main"
和"main"
是两个完全不同的名字。(这可能无助于提高可读性,但没有技术上的原因)例如,
#include <stdio.h>
int Main (int argc, char **argv)
{
for (int i = 1; i < argc; i++)
printf (" %2d : %sn", i, argv[i]);
return argc;
}
int main (int argc, char **argv) {
printf ("n %d arguments.n", Main (argc, argv) - 1);
return 0;
}
使用/输出示例
$ ./bin/mainMain The quick brown fox jumps over a lazy dog.
1 : The
2 : quick
3 : brown
4 : fox
5 : jumps
6 : over
7 : a
8 : lazy
9 : dog.
9 arguments.
int Main (void)
{
return 0;
}
int main (void)
{
return 0;
}
编译和链接完美。
这是一个糟糕的想法,一些不严格遵守的环境可能会保留这个名称。但是链接器应该是大小写敏感的,并且不保留带有大写字母的Main。
你已经得到了答案,但只是添加一些权威的引用,直接来自C11
,章节§5.1.2
执行环境:
定义了两种执行环境:独立的和托管的。在这两种情况下,程序启动发生在执行程序调用指定的C函数时环境。[…]
then,§5.1.2.2,宿主环境,p1, "程序启动"
也就是说,正如我们所知,C是区分大小写的,(引用§6.4.2.1,"标识符",通用)程序启动时调用的函数命名为
main
。[…]
标识符是一个非数字字符序列(包括下划线_、小写和大写拉丁字母,以及其他字符)和数字,其中表示6.2.1中描述的一个或多个实体。小写字母和大写字母是不同的。 [....]
因此,没有与main()
相同大小写的标识符与main()
不同,无论是Main()
, MAIN()
, maiN()
还是任何其他可能的组合。对于C语言来说,它们都是不同的标识符。
那么,
的答案在C中,可以创建一个名为Main()的函数吗?
是yes, certainly.
只是为了更清楚一点,如果您仅创建Main()
而不创建main()
,编译器本身将无法知道您通过编写Main()
来表示main()
,因为它们是不同的标识符。
只有当你用大写写一个或多个字母时,我认为,像Main或Main一样,否则你的编译器将无法告诉你想要哪个Main,因为Main在C中已经是一个函数了。注意:我也是一个初学者,所以我很可能是错的。