0

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

    #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:必须定义入口点

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

4

5 回答 5

8

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

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

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

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

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

于 2013-02-10T03:58:57.510 回答
5

把你的名字带main出命名空间

于 2013-02-10T03:59:27.380 回答
3

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

于 2013-02-10T03:59:02.647 回答
3

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

于 2013-02-10T03:59:04.567 回答
2

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

于 2013-02-10T04:04:07.880 回答