为什么我不需要包含 main.cpp?
Why do I not need to include main.cpp?
小例子中needsExtern.cpp需要global::bar
的定义。 needsExtern.cpp 通常会包含带有定义的文件(在本例中为 main.cpp)。但是,由于文件是 main.cpp,因此不需要。
为什么 needsExtern.cpp 不需要包含 main.cpp?
needsExtern.h
struct NeedsExtern
{
NeedsExtern();
};
needsExtern.cpp
#include "needsExtern.h"
#include <iostream>
namespace global
{
extern const int bar;
}
NeedsExtern::NeedsExtern()
{
std::cout << global::bar << "\n";
}
main.cpp
#include "needsExtern.h"
namespace global
{
extern const int bar{26};
}
void main()
{
NeedsExtern ne;
}
这正是发明 extern
的地方:编译器只是 假定 变量在项目的其他地方定义。你可以阅读更多关于这个原则的内容 here.
小例子中needsExtern.cpp需要global::bar
的定义。 needsExtern.cpp 通常会包含带有定义的文件(在本例中为 main.cpp)。但是,由于文件是 main.cpp,因此不需要。
为什么 needsExtern.cpp 不需要包含 main.cpp?
needsExtern.h
struct NeedsExtern
{
NeedsExtern();
};
needsExtern.cpp
#include "needsExtern.h"
#include <iostream>
namespace global
{
extern const int bar;
}
NeedsExtern::NeedsExtern()
{
std::cout << global::bar << "\n";
}
main.cpp
#include "needsExtern.h"
namespace global
{
extern const int bar{26};
}
void main()
{
NeedsExtern ne;
}
这正是发明 extern
的地方:编译器只是 假定 变量在项目的其他地方定义。你可以阅读更多关于这个原则的内容 here.