header / cpp files

header / cpp files

本文关键字:files cpp header      更新时间:2023-10-16

我找不到头文件的用途。我们为什么需要它?C#中没有标题,你只需写"using",就是这样。

另外,头文件和 CPP 文件有什么区别?

谢谢。

回答"头文件的用途是什么"部分,而不是没有人谈论过,将方法定义与实际实现分开允许编译器在更改方法实现时不会重新编译项目中的所有文件。

这是因为调用它

的文件仍然以相同的方式调用它(这在标头中定义),如果实现更改(在 cpp 文件中),编译器仅编译已更改的文件并再次执行链接,从而在处理大项目时节省大量时间。

请查看以下文章,其中解释了 C# 编译器的工作原理以及为什么它不需要标头。

AFAIK没有区别。您始终可以编写完全没有标头的代码:

答.cpp

class A {
public:
   void foo();
};
void A::foo() {}

乙.cpp

class A {
public:
   void foo();
};
int main() { A a; a.foo(); }

然而,将头文件用于通用定义更容易、方便且产生更少的错误,否则必须在每个翻译单元中编写 (.cpp):

A.H

class A {
public:
   void foo();
};

答.cpp

#include "a.h"
void A::foo() {}

乙.cpp

#include "a.h"
int main() { A a; a.foo(); }

当然,您只能编译.cpp文件。但是,标头有"预编译"。


为什么 C# 不需要标头?我的看法完全不同。在 C# 中,您只有标头,using 等效于 C++ include 。但这只是我个人的看法:D

你需要对 .NET、C# 和 IL 有更好的了解。它不像"使用"指令那么简单。IL 充斥着循环依赖问题,根据我的最新知识,Microsoft正在尝试一些聪明的技巧来解决循环依赖,但没有一个是完美的。

也许当你毕业到大项目时,你会遇到循环依赖问题。在那之前,请记住,CPP/HPP 的区别有助于避免循环依赖......