c++ 头文件和实现
c++ Header Files and Implementation
我想了解 IDE(我正在使用 Visual Studio)如何知道在哪里可以找到头文件声明的实现。
假设我有 2 个 cpp 文件和 1 个头文件:
main.cpp
,包含main()
函数并包含person.h
person.h
,包含一些在 person.cpp
中实现的 class 声明
person.cpp
,包含 person.h
声明的实现,还定义了 person.h
所以我的理解是 main.cpp
和 person.cpp
知道在哪里可以找到函数声明,但是 person.h
必须在某些 .cpp
文件中搜索这些实现。
现在,Visual Studio 如何跟踪这个?每次新建一个头文件,VS是否需要解析工程中的每一个.cpp
文件,找到声明实现的地方?头文件没有任何要搜索 .cpp
文件的声明,但它找到了它们! Visual Studio 正在扫描项目中的每个 .cpp
文件吗?
那么,在包含数百或数千个 .cpp
文件的大型项目中会发生什么?这似乎不是很有效,所以我认为 VS 必须以不同的方式来做。你知道怎么做吗?
PS:不是关于 compiler/linker 过程,而是关于 VS IDE 的工作方式(甚至在编译或 link 最终 exe 之前)
Intellisense 是 Visual Studio 将定义链接到声明的功能的名称;在键入标识符时列出完成;并在错误下绘制红色波浪线。
Intellisense 的工作原理是不断扫描解决方案中的每个源文件,包括您键入的新定义。有关源代码中所有构造的记录存储在数据库中,该数据库位于磁盘上的 文件中。添加新定义或声明时,无论是添加到头文件还是源文件,Intellisense 都无需花很长时间在数据库中查找任何相关项。
如果删除 .VC.db 文件,然后打开解决方案,Intellisense 将需要很长时间才能重新扫描所有内容,然后才能正常工作。 IDE 还会在状态栏中告诉您它是 "parsing" 个文件。
我想了解 IDE(我正在使用 Visual Studio)如何知道在哪里可以找到头文件声明的实现。
假设我有 2 个 cpp 文件和 1 个头文件:
main.cpp
,包含main()
函数并包含person.h
person.h
,包含一些在person.cpp
中实现的 class 声明
person.cpp
,包含person.h
声明的实现,还定义了person.h
所以我的理解是 main.cpp
和 person.cpp
知道在哪里可以找到函数声明,但是 person.h
必须在某些 .cpp
文件中搜索这些实现。
现在,Visual Studio 如何跟踪这个?每次新建一个头文件,VS是否需要解析工程中的每一个.cpp
文件,找到声明实现的地方?头文件没有任何要搜索 .cpp
文件的声明,但它找到了它们! Visual Studio 正在扫描项目中的每个 .cpp
文件吗?
那么,在包含数百或数千个 .cpp
文件的大型项目中会发生什么?这似乎不是很有效,所以我认为 VS 必须以不同的方式来做。你知道怎么做吗?
PS:不是关于 compiler/linker 过程,而是关于 VS IDE 的工作方式(甚至在编译或 link 最终 exe 之前)
Intellisense 是 Visual Studio 将定义链接到声明的功能的名称;在键入标识符时列出完成;并在错误下绘制红色波浪线。
Intellisense 的工作原理是不断扫描解决方案中的每个源文件,包括您键入的新定义。有关源代码中所有构造的记录存储在数据库中,该数据库位于磁盘上的
如果删除 .VC.db 文件,然后打开解决方案,Intellisense 将需要很长时间才能重新扫描所有内容,然后才能正常工作。 IDE 还会在状态栏中告诉您它是 "parsing" 个文件。