2013-02-10 101 views
0

我正在爲我正在學習的課程編寫代碼。我不能發佈我的代碼不歸零我得分的項目,但這裏是我的司機縮寫代碼:未識別main()函數

#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:入口點必須被定義

現在,據我知道,如果我沒有一個主要功能,你可以看到我真正做到這一點的錯誤應該只發生有。我試圖將這個文件中的代碼複製到另一個項目中,我試圖將我的主函數全部分離出來(這導致了更多的錯誤,並且沒有修復入口點錯誤),並且我試過了 - 安裝Visual C++ Express並從頭開始。我的老師和我在main()(以及我編寫和包含的Stack.h文件中的所有代碼)之前檢查了此文件中的所有代碼,並且沒有任何缺少的括號,分號或任何其他標點符號。我甚至不知道還有什麼可以嘗試。思考?

+3

你的老師在命名空間中沒有看到你的main? – ChiefTwoPencils 2013-02-10 04:00:17

+0

它不是主要的,你需要..這是::主!創建一個::主,你設置。 – thang 2013-02-10 04:15:22

回答

7

您需要將main移到任何名稱空間之外。

對於任何人誰在乎什麼標準不得不說(§3.6.1/ 1):

A program shall contain a global function called main , which is the designated start of the program.

編輯:對於那些誰也想上什麼是「全球性」的手段硬道理(§ 3.3.5/3在C++ 03,§3.3.6/ 3與C++ 11幾乎相同的措詞):

The outermost declarative region of a translation unit is also a namespace, called the global namespace. A name declared in the global namespace has global namespace scope (also called global scope). [...] Names with global namespace scope are said to be global.

+1

+1僅供參考 – 2013-02-10 04:04:11

+0

確定,但是您是否也可以添加對*全局函數*表示函數的部分的引用:: namespace中的函數?我相信它在某處(否則它會模棱兩可),並且由於它具有方便性......因爲它是一種解釋,它只需要不是類成員函數。 – thang 2013-02-10 04:33:01

+0

@thang:當然。 – 2013-02-10 04:36:56

3

移動main功能的命名空間的外部。

3

將您的main函數移出命名空間。從技術上講,您的main實際上是jack::main,而它位於命名空間內。

5

把你main了命名空間

+2

大聲笑我們都在同一時間評論。 – 2013-02-10 03:59:50

2

的您應該只在global namespace定義main(),內部沒有任何其他namespace秒。