可以在C中创建一个名为Main()
且函数为 M 的函数吗?
由于具有相同名称但不同案例的两个元素被视为单独的实体,因此我认为Main()
可以创建,但我只需要确认。
答案 0 :(得分:4)
当然,为什么不呢?预处理器和编译器并不关心"Main"
和"main"
基本相似。 C区分大小写,因此"Main"
和"main"
是两个完全不同的名称。 (它可能无法提供可读性,但没有技术原因你不能)例如,
#include <stdio.h>
int Main (int argc, char **argv)
{
for (int i = 1; i < argc; i++)
printf (" %2d : %s\n", 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.
答案 1 :(得分:2)
int Main (void)
{
return 0;
}
int main (void)
{
return 0;
}
完美地编译和链接。它区分大小写。
答案 2 :(得分:1)
这是一个可怕的想法,一些不严格符合的环境可能保留该名称。但是链接器应该区分大小写,并且不保留带有大写字母的Main。
答案 3 :(得分:1)
您已经得到了答案,但只是直接从C11
添加了一些权威性引用,章节§5.1.2
执行环境:
定义了两个执行环境:独立和托管。在这两种情况下, 程序启动发生在执行调用指定的C函数时 环境。 [...]
然后,§5.1.2.2,托管环境,p1,“程序启动”
程序启动时调用的函数名为
main
。 [...]
如上所述,据我们所知,C 区分大小写,(引用§6.4.2.1/ 2,“标识符”,一般)
标识符是一系列非数字字符(包括下划线_, 指定的小写和大写拉丁字母,以及其他字符和数字 6.2.1中描述的一个或多个实体。 小写和大写字母不同。 [....]
所以与main()
没有相同大小写的标识符与main()
不一样,无论是Main()
,MAIN()
,{{ 1}}或任何其他可能的组合。就C而言,它们都是不同的标识符。
所以,回答
肯定是肯定的。在C中,是否可以创建一个名为Main()的函数?
只是为了清理一下,如果你只创建maiN()
并遗漏Main()
,编译器本身就无法知道你的意思{ {1}}编写main()
,因为它们是编译器的不同标识符。
答案 4 :(得分:0)
只有当你用大写写一个或多个字母时,我认为,像Main或MAIN一样,否则你的编译器将无法告诉你想要哪个主要因为main已经是C中的一个函数。 注意:我也是初学者,所以我可能错了。