2013-02-10 3 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: точка входа должна быть определена

Теперь, насколько я знаю, эта ошибка должна произойти только, если у меня нет основной функции, которую вы можете увидеть, я на самом деле иметь. Я попытался скопировать код из этого файла в другой проект, я попытался отделить мою основную функцию от другого файла cpp сам по себе (что вызвало больше ошибок и не исправило ошибку точки входа), и я попытался повторно -установка Visual C++ Express и запуск полностью с нуля. Мы с моим учителем проверили весь код в этом файле перед main() (и весь код в файле Stack.h, который я написал и включили), и нет никаких скобок, точек с запятой или любой другой пунктуации. Я не знаю, что еще попробовать. Мысли?

+3

Ваш учитель не видел вашего основного в пространстве имен? – ChiefTwoPencils

+0

Это не главное, что вам нужно .. это :: main! создайте :: main и вы установите. – thang

ответ

7

Вам необходимо переместить main вне любого пространства имён.

Для всех, кто заботится именно о том, что стандарт должен сказать (§3.6.1/1):

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

Edit: для тех, кто также хочет последнее слово о том, «глобальные» означает (§ 3.3.5/3 в с ++ 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 для справки –

+0

ok, но можете ли вы также добавить ссылку на часть, в которой говорится, что * глобальная функция * означает функцию в пространстве имен ::? я уверен, что он где-то там (в противном случае это было бы двусмысленно), и поскольку у вас есть его ... как есть, одна интерпретация заключается в том, что просто не нужно быть функцией класса. – thang

+0

@thang: Конечно. –

3

переместить функцию main вне пространства имен.

3

Возьмите функцию main из пространства имен. Технически ваш main на самом деле jack::main, находясь внутри пространства имен.

5

Возьмите main из имен

+2

LOL мы все прокомментировали в то же время. –

2

Вы должны определить main() только в global namespace, а не в каких-либо других namespace с.

 Смежные вопросы

  • Нет связанных вопросов^_^