2014-02-12 6 views
-1

У меня есть программа main.cpp, которая включает файл заголовка. Реализация функций находится в другом файле cpp.Ошибка при связывании внешней переменной C++

+2

Пожалуйста, потратьте немного времени, чтобы прочитать [страницы справочной информации] (http://stackoverflow.com/help), особенно разделы, названные (HTTP [ «Какие темы я могу спросить здесь?»]: // stackoverflow.com/help/on-topic) и [«Какие типы вопросов я должен избегать?»] (http://stackoverflow.com/help/dont-ask). И что еще более важно, прочитайте [контрольный список вопросов переполнения стека] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist). Вы также можете узнать, что такое [SSCCE] (http://sscce.org/). –

+1

показать нам код –

+1

Являются ли переменные, объявленные в функции 'main()' или перед этим? Он должен быть до этого, делая их [глобальными переменными] (http://www.learncpp.com/cpp-tutorial/42-global-variables/). – Proxy

ответ

0

Вы указали фактическое хранилище переменных в главном? В приведенном ниже примере внешние переменные объявляются в common.h. Но фактическое хранилище для этого vars in in main.cpp.

==> common.h <== 
extern int var1, var2, var3, var4; 

==> main.cpp <== 
#include <iostream.h> 
#include "common.h" 
#include "other.h" 

int var1, var2, var3, var4 = 4; /* the actual storage */ 
int main(int argc, char **argv) 
{ 
    std::cout << sumVars() << endl; 
} 

==> other.h <== 
int sumVars(); 

==> other.cpp <== 
#include "common.h" 

int sumVars() { 
    return var1 + var2 + var3 + var4; 
} 
+0

похоже на мой код, но я объявлял эти переменные в main(); как я могу использовать их в других функциях, объявленных в других файлах cpp, без необходимости делать эти переменные глобальными, как вы? Lifny –

+0

Если вы объявили их внутри main, то они являются локальными переменными (в стеке) и не могут быть напрямую использованы другими функциями даже в том же исходном файле и не могут иметь внешнюю связь. –