在C语言中,可以创建一个名为Main()的函数



可以用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, "程序启动"

程序启动时调用的函数命名为main。[…]

也就是说,正如我们所知,C是区分大小写的,(引用§6.4.2.1,"标识符",通用)

标识符是一个非数字字符序列(包括下划线_、小写和大写拉丁字母,以及其他字符)和数字,其中表示6.2.1中描述的一个或多个实体。小写字母和大写字母是不同的。 [....]

因此,没有与main()相同大小写的标识符main()不同,无论是Main(), MAIN(), maiN()还是任何其他可能的组合。对于C语言来说,它们都是不同的标识符。

那么,

的答案

在C中,可以创建一个名为Main()的函数吗?

是yes, certainly.

只是为了更清楚一点,如果您创建Main()而不创建main(),编译器本身将无法知道您通过编写Main()来表示main(),因为它们是不同的标识符。

只有当你用大写写一个或多个字母时,我认为,像Main或Main一样,否则你的编译器将无法告诉你想要哪个Main,因为Main在C中已经是一个函数了。注意:我也是一个初学者,所以我很可能是错的。

相关内容

  • 没有找到相关文章

最新更新