main()函数无法识别

main() function not recognized

本文关键字:识别 函数 main      更新时间:2023-10-16

我正在为正在学习的一个类编写代码。我不能在不清零我的项目分数的情况下发布所有代码,但这是我的驱动程序的缩写代码:

    #pragma once
    #include <iostream>
    #include <fstream>
    #include <string>
    #include "Stack.h"
    using namespace std;
    namespace jack
    {
        int high(char a)
        {
            // My Code
        };
        bool isSameOrHigher(char top, char cur)
        {
            // My Code
        };
        int main()
        {
            // My Code
        };
    };

由于某些原因,当我编译这段代码时,我无法弄清楚,我得到了以下错误:

链接:致命错误LNK1561:必须定义入口点

现在,据我所知,只有当我没有主函数时,才会发生这个错误,你可以看到我确实有。我曾尝试将代码从这个文件复制到另一个项目中,我曾尝试单独将我的主函数分离到另一份cpp文件中(这导致了更多错误,但没有修复入口点错误),我还尝试重新安装Visual C++express并完全从头开始。我和我的老师在main()之前检查了这个文件中的所有代码(以及我编写并包含的Stack.h文件中的全部代码),没有遗漏任何括号、分号或任何其他标点符号。我甚至不知道还能尝试什么。想法?

您需要将main移动到任何命名空间之外。

对于任何关心标准内容的人(§3.6.1/1):

程序应包含一个名为main全局函数,该函数是程序的指定启动。

编辑:对于那些还想知道"全局"含义的人(C++03中的§3.3.5/3,C++11中几乎相同措辞的§3.3.6/3):

翻译单元的最外层声明性区域也是一个名称空间,称为全局名称空间。在全局命名空间中声明的名称具有全局命名空间作用域(也称为全球作用域)。[…]具有全局命名空间作用域的名称称为全局

main从名称空间中取出

main函数移到命名空间之外。

main函数从命名空间中取出。从技术上讲,您的main实际上是jack::main,而它在名称空间内。

您应该只在global namespace中定义main(),而不是在任何其他namespace s中定义。