0 c++ program-entry-point compiler-errors entry-point language-lawyer
我正在为我正在上课的代码编写代码.我不能发布我的所有代码而不归零我的项目得分,但这里是我的驱动程序的缩写代码:
#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
};
};
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我无法弄清楚何时编译此代码,我收到以下错误:
链接:致命错误LNK1561:必须定义入口点
现在,据我所知,只有当我没有主要功能时才会出现这个错误,你可以看到我确实有这个功能.我已经尝试将此文件中的代码复制到另一个项目中,我已经尝试将我的main函数单独分离到另一个cpp文件中(导致更多错误并且没有修复入口点错误),我尝试过 - 安装Visual C++ express并从头开始.我的老师和我在main()之前检查了这个文件中的所有代码(以及我编写和包含的Stack.h文件中的所有代码),并且没有任何丢失的括号,分号或任何其他标点符号.我不知道还有什么可以尝试的.思考?
您需要移出main任何命名空间.
对于任何关心标准必须说明的人(§3.6.1/ 1):
程序应包含一个名为的全局函数
main,它是程序的指定开始.
编辑:对于那些也想要"全局"意思的最后一个词的人(C++ 03中的§3.3.5/ 3,§3.3.6/ 3,C++ 11中的措辞几乎相同):
翻译单元的最外层声明区域也是名称空间,称为全局名称空间.在全局命名空间中声明的名称具有全局命名空间范围(也称为全局范围).[...]具有全局命名空间范围的名称被认为是全局的.