C++ Visual Studio如何将多个C++;文件夹?

C++ Visual Studio如何将多个C++;文件夹?,c++,compilation,linker,include,C++,Compilation,Linker,Include,我在visual studio中有一个简单的项目,其中包含main.cpp、Log.cpp和Log.h main.cpp: #include <iostream> #include "Log.h" int main() { Log("Hello World"); std::cin.get(); } #包括 #包括“Log.h” int main() { 日志(“你好世界”); std::cin.get(); } Log.c

我在visual studio中有一个简单的项目,其中包含
main.cpp
Log.cpp
Log.h

main.cpp:

#include <iostream>
#include "Log.h"

int main()
{
    Log("Hello World");
    std::cin.get();
}
#包括
#包括“Log.h”
int main()
{
日志(“你好世界”);
std::cin.get();
}
Log.cpp

#include <iostream>
#include "Log.h"

void Log(std::string message)
{
    std::cout << message << std::endl;
}

void InitLog()
{
    Log("Initialized Logger");
}
#包括
#包括“Log.h”
无效日志(std::字符串消息)
{

std::cout这就是所谓的链接过程。编译器需要知道
Log
类中函数的返回类型和签名(这就是为什么要包含头的原因),但如果找不到函数定义,它不会抛出错误。当它将cpp文件编译成目标代码文件时,它基本上会离开函数定义应该放在的“洞”中。然后使用链接器将这些对象文件链接到一个可执行文件中


但是,编译器确实需要知道类的数据成员,因为这些数据成员决定了对象占用的内存量,这是创建对象所必需的。同样,这些数据成员包含在main中包含的头文件中的类定义中。

Visual Studio IDE或Visual Studio代码,编辑器?Visual Studio IDEYou JUT将它们全部放入同一个构建项目中,它们应该自动链接。C++的时候,同样的基本原则是:这是链接器所扮演的角色之一。它在翻译单元编译成对象文件后将外部引用解析为一个可执行文件。G建议您应该有一个
Log
类,该类带有构造函数(
Log::Log
)和某种
Log(const std::string&message)
函数。请注意使用
const
引用。这样可以节省复制值的成本,但几乎总是浪费。
#pragma once
#include <string>

void Log(std::string);
void InitLog();