我正在编写我正在上课的代码。我不能在没有将项目的分数归零的情况下发布我的所有代码,但这里是我的驱动程序的缩写代码:
#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文件中的所有代码),并且没有任何丢失的括号,分号或任何其他标点符号。我不知道还有什么可以尝试的。想法?
答案 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>