main()函数无法识别

时间:2013-02-10 03:56:59

标签: c++ compiler-errors main language-lawyer entry-point

我正在编写我正在上课的代码。我不能在没有将项目的分数归零的情况下发布我的所有代码,但这里是我的驱动程序的缩写代码:

    #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
        };
    };

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

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

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

5 个答案:

答案 0 :(得分:7)

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

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

  

程序应包含名为main全局函数,该函数是程序的指定开始。

编辑:对于那些也想要“全局”意思的最后一句话的人(C ++ 03中的§3.3.5/ 3,§3.3.6/ 3,C ++ 11中的措辞几乎相同):< / p>

  

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

答案 1 :(得分:5)

main从命名空间中取出

答案 2 :(得分:3)

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

答案 3 :(得分:3)

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

答案 4 :(得分:2)

您应该仅在main()中定义global namespace,而不是在任何其他namespace内定义。{/ p>