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。我想如果你想学究的话,它是命名空间范围内的一个自由函数。我想这是可行的。非全局自由函数,或仅包含全局和非全局的自由函数,尽管它绑定到命名空间。我想知道标准是否为它定义了一个名称。