main()函数无法识别

0 c++ program-entry-point compiler-errors entry-point language-lawyer

我正在为我正在上课的代码编写代码.我不能发布我的所有代码而不归零我的项目得分,但这里是我的驱动程序的缩写代码:

    #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
        };
    };
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我无法弄清楚何时编译此代码,我收到以下错误:

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

现在,据我所知,只有当我没有主要功能时才会出现这个错误,你可以看到我确实有这个功能.我已经尝试将此文件中的代码复制到另一个项目中,我已经尝试将我的main函数单独分离到另一个cpp文件中(导致更多错误并且没有修复入口点错误),我尝试过 - 安装Visual C++ express并从头开始.我的老师和我在main()之前检查了这个文件中的所有代码(以及我编写和包含的Stack.h文件中的所有代码),并且没有任何丢失的括号,分号或任何其他标点符号.我不知道还有什么可以尝试的.思考?

Jer*_*fin 7

您需要移出main任何命名空间.

对于任何关心标准必须说明的人(§3.6.1/ 1):

程序应包含一个名为的全局函数main,它是程序的指定开始.

编辑:对于那些也想要"全局"意思的最后一个词的人(C++ 03中的§3.3.5/ 3,§3.3.6/ 3,C++ 11中的措辞几乎相同):

翻译单元的最外层声明区域也是名称空间,称为全局名称空间.在全局命名空间中声明的名称具有全局命名空间范围(也称为全局范围).[...]具有全局命名空间范围的名称被认为是全局的.


Tyl*_*eau 5

带你main离开命名空间

  • 大声笑我们都同时评论. (2认同)