Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法识别main()函数_C++_Compiler Errors_Main_Language Lawyer_Entry Point - Fatal编程技术网

C++ 无法识别main()函数

C++ 无法识别main()函数,c++,compiler-errors,main,language-lawyer,entry-point,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)

我正在为一门课写代码。我不能发布所有代码而不将项目分数归零,但以下是我的驱动程序的缩写代码:

    #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文件中,这本身就造成了更多的错误,并没有修复入口点错误,并且我尝试重新安装VisualC++快速路并完全从头开始。我的老师和我已经在main之前检查了这个文件中的所有代码,以及我编写和包含的Stack.h文件中的所有代码,没有任何缺少的括号、分号或任何其他标点符号。我不知道还有什么好尝试的。想法?

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

对于任何关心标准第3.6.1/1节内容的人:

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

编辑:对于那些也想知道global在C++03中是什么意思的人,§3.3.5/3,§3.3.6/3在C++11中的措辞几乎相同:

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


将主函数移出命名空间。

将主函数移出命名空间。从技术上讲,你的main实际上是jack::main,而它在名称空间中。

将你的main从名称空间中去掉。

你应该只在全局名称空间中定义main,而不在任何其他名称空间中。

哈哈,我们都在同一时间发表了评论。你的老师没有在名称空间中看到你的main?你需要的不是main。。是梅因!创建一个::main,您就可以设置了。好的,但是您还可以添加对表示::命名空间中的全局函数意味着函数的部分的引用吗?我确信它就在某个地方,否则它就会模棱两可,既然你手边有它。。。事实上,一种解释是它不需要是类成员函数。所以实际上有些迂腐,但如果你有类似的代码。使a无效;命名空间x{void b;}类c{void d;}。a是一个全局函数。d是成员函数,而不是全局函数。什么是b?如果b不是全局函数,也不是成员函数,我们叫它什么?@thang:我通常叫它x::b。我想如果你想学究的话,它是命名空间范围内的一个自由函数。我想这是可行的。非全局自由函数,或仅包含全局和非全局的自由函数,尽管它绑定到命名空间。我想知道标准是否为它定义了一个名称。