Из того, что я собрал, ключевое слово «extern» в С++ можно использовать, чтобы сообщить компилятору, что переменная определена в другом файле .cpp. Мне было интересно, должно ли это определение быть явным или определение может быть изменено с помощью побочного эффекта с помощью функции в файле .cpp, где определена переменная.
i.e.
//a.h
extern int foo;
//a.cpp
#include <a.h>
int foo=0;
int func(int &foo) // EDIT: oops, forgot the type for the parameter and return statement
{
foo = 10;
return 5;
}
int x = func(foo); // EDIT: changed to match declaration and assigned function to dummy variable
//b.cpp
#include <a.h>
int main()
{
cout << foo;
return 0;
}
Может ли программа распознать, что foo должно быть равно 10 или будет равно 0? И если компилятор распознает foo как 0, могу ли я сделать так, чтобы он распознавал его как 10? Кроме того, причина, по которой я не могу просто скомпилировать и протестировать это самостоятельно, заключается в том, что я не уверен, как скомпилировать, когда есть несколько файлов, я новичок =).
РЕДАКТИРОВАТЬ: Спасибо за указатели ошибок, но я думаю, что главный вопрос по-прежнему заключается в том, может ли b.cpp видеть, равен ли foo 10 или 0. Ура!
&foo
вint func(&foo) { ... }
? - person Praetorian   schedule 02.07.2013int
и вернутьint
, сигнатура функции должна бытьint func(int&)
, а функции нужен операторreturn
. Пожалуйста, начните читать книгу. - person Praetorian   schedule 02.07.2013